// $ANTLR 3.0.1 D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g 2008-08-06 15:38:54

	package patternmining.model.construction;


import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
/**
 * For more information see the head comment within the 'java.g' grammar file
 * that defines the input for this tree grammar.
 *
 * BSD licence
 * 
 * Copyright (c) 2007-2008 by HABELITZ Software Developments
 *
 * All rights reserved.
 * 
 * http://www.habelitz.com
 *
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  1. Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *  2. Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *  3. The name of the author may not be used to endorse or promote products
 *     derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY HABELITZ SOFTWARE DEVELOPMENTS ('HSD') ``AS IS'' 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 * ARE DISCLAIMED. IN NO EVENT SHALL 'HSD' BE LIABLE FOR ANY DIRECT, INDIRECT, 
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
public class JavaASTFirstPass extends TreeParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "AND", "AND_ASSIGN", "ASSIGN", "AT", "BIT_SHIFT_RIGHT", "BIT_SHIFT_RIGHT_ASSIGN", "COLON", "COMMA", "DEC", "DIV", "DIV_ASSIGN", "DOT", "DOTSTAR", "ELLIPSIS", "EQUAL", "GREATER_OR_EQUAL", "GREATER_THAN", "INC", "LBRACK", "LCURLY", "LESS_OR_EQUAL", "LESS_THAN", "LOGICAL_AND", "LOGICAL_NOT", "LOGICAL_OR", "LPAREN", "MINUS", "MINUS_ASSIGN", "MOD", "MOD_ASSIGN", "NOT", "NOT_EQUAL", "OR", "OR_ASSIGN", "PLUS", "PLUS_ASSIGN", "QUESTION", "RBRACK", "RCURLY", "RPAREN", "SEMI", "SHIFT_LEFT", "SHIFT_LEFT_ASSIGN", "SHIFT_RIGHT", "SHIFT_RIGHT_ASSIGN", "STAR", "STAR_ASSIGN", "XOR", "XOR_ASSIGN", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FALSE", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "IMPLEMENTS", "INSTANCEOF", "INTERFACE", "IMPORT", "INT", "LONG", "NATIVE", "NEW", "NULL", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS", "TRANSIENT", "TRUE", "TRY", "VOID", "VOLATILE", "WHILE", "ANNOTATION_INIT_ARRAY_ELEMENT", "ANNOTATION_INIT_BLOCK", "ANNOTATION_INIT_DEFAULT_KEY", "ANNOTATION_INIT_KEY_LIST", "ANNOTATION_LIST", "ANNOTATION_METHOD_DECL", "ANNOTATION_SCOPE", "ANNOTATION_TOP_LEVEL_SCOPE", "ARGUMENT_LIST", "ARRAY_DECLARATOR", "ARRAY_DECLARATOR_LIST", "ARRAY_ELEMENT_ACCESS", "ARRAY_INITIALIZER", "BLOCK_SCOPE", "CAST_EXPR", "CATCH_CLAUSE_LIST", "CLASS_CONSTRUCTOR_CALL", "CLASS_INSTANCE_INITIALIZER", "CLASS_STATIC_INITIALIZER", "CLASS_TOP_LEVEL_SCOPE", "CONSTRUCTOR_DECL", "ENUM_TOP_LEVEL_SCOPE", "EXPR", "EXTENDS_BOUND_LIST", "EXTENDS_CLAUSE", "FOR_CONDITION", "FOR_EACH", "FOR_INIT", "FOR_UPDATE", "FORMAL_PARAM_LIST", "FORMAL_PARAM_STD_DECL", "FORMAL_PARAM_VARARG_DECL", "FUNCTION_METHOD_DECL", "GENERIC_TYPE_ARG_LIST", "GENERIC_TYPE_PARAM_LIST", "INTERFACE_TOP_LEVEL_SCOPE", "IMPLEMENTS_CLAUSE", "LABELED_STATEMENT", "LOCAL_MODIFIER_LIST", "JAVA_SOURCE", "METHOD_CALL", "MODIFIER_LIST", "PARENTESIZED_EXPR", "POST_DEC", "POST_INC", "PRE_DEC", "PRE_INC", "QUALIFIED_TYPE_IDENT", "STATIC_ARRAY_CREATOR", "SUPER_CONSTRUCTOR_CALL", "SWITCH_BLOCK_LABEL_LIST", "THIS_CONSTRUCTOR_CALL", "THROWS_CLAUSE", "TYPE", "UNARY_MINUS", "UNARY_PLUS", "VAR_DECLARATION", "VAR_DECLARATOR", "VAR_DECLARATOR_LIST", "VOID_METHOD_DECL", "IDENT", "HEX_LITERAL", "OCTAL_LITERAL", "DECIMAL_LITERAL", "FLOATING_POINT_LITERAL", "CHARACTER_LITERAL", "STRING_LITERAL", "HEX_DIGIT", "INTEGER_TYPE_SUFFIX", "EXPONENT", "FLOAT_TYPE_SUFFIX", "ESCAPE_SEQUENCE", "UNICODE_ESCAPE", "OCTAL_ESCAPE", "JAVA_ID_START", "JAVA_ID_PART", "WS", "COMMENT", "LINE_COMMENT"
    };
    public static final int PACKAGE=84;
    public static final int EXPONENT=173;
    public static final int STAR=49;
    public static final int WHILE=103;
    public static final int MOD=32;
    public static final int MOD_ASSIGN=33;
    public static final int CASE=58;
    public static final int CHAR=60;
    public static final int NEW=82;
    public static final int DO=64;
    public static final int GENERIC_TYPE_PARAM_LIST=138;
    public static final int CLASS_INSTANCE_INITIALIZER=121;
    public static final int ARRAY_ELEMENT_ACCESS=115;
    public static final int FOR_CONDITION=129;
    public static final int NOT=34;
    public static final int VAR_DECLARATION=160;
    public static final int ANNOTATION_METHOD_DECL=109;
    public static final int EOF=-1;
    public static final int DIV_ASSIGN=14;
    public static final int BREAK=56;
    public static final int LOGICAL_AND=26;
    public static final int BIT_SHIFT_RIGHT_ASSIGN=9;
    public static final int UNARY_PLUS=159;
    public static final int TYPE=157;
    public static final int FINAL=70;
    public static final int INC=21;
    public static final int RPAREN=43;
    public static final int IMPORT=78;
    public static final int STRING_LITERAL=170;
    public static final int FOR_UPDATE=132;
    public static final int FLOATING_POINT_LITERAL=168;
    public static final int CAST_EXPR=118;
    public static final int NOT_EQUAL=35;
    public static final int VOID_METHOD_DECL=163;
    public static final int RETURN=88;
    public static final int THIS=95;
    public static final int DOUBLE=65;
    public static final int VOID=101;
    public static final int ENUM_TOP_LEVEL_SCOPE=125;
    public static final int SUPER=92;
    public static final int COMMENT=181;
    public static final int ANNOTATION_INIT_KEY_LIST=107;
    public static final int JAVA_ID_START=178;
    public static final int FLOAT_TYPE_SUFFIX=174;
    public static final int PRE_DEC=149;
    public static final int RBRACK=41;
    public static final int IMPLEMENTS_CLAUSE=140;
    public static final int SWITCH_BLOCK_LABEL_LIST=154;
    public static final int LINE_COMMENT=182;
    public static final int PRIVATE=85;
    public static final int STATIC=90;
    public static final int BLOCK_SCOPE=117;
    public static final int ANNOTATION_INIT_DEFAULT_KEY=106;
    public static final int SWITCH=93;
    public static final int NULL=83;
    public static final int VAR_DECLARATOR=161;
    public static final int MINUS_ASSIGN=31;
    public static final int ELSE=66;
    public static final int STRICTFP=91;
    public static final int CHARACTER_LITERAL=169;
    public static final int PRE_INC=150;
    public static final int ANNOTATION_LIST=108;
    public static final int ELLIPSIS=17;
    public static final int NATIVE=81;
    public static final int OCTAL_ESCAPE=177;
    public static final int UNARY_MINUS=158;
    public static final int THROWS=97;
    public static final int LCURLY=23;
    public static final int INT=79;
    public static final int FORMAL_PARAM_VARARG_DECL=135;
    public static final int METHOD_CALL=144;
    public static final int ASSERT=54;
    public static final int TRY=100;
    public static final int INTERFACE_TOP_LEVEL_SCOPE=139;
    public static final int SHIFT_LEFT=45;
    public static final int WS=180;
    public static final int SHIFT_RIGHT=47;
    public static final int FORMAL_PARAM_STD_DECL=134;
    public static final int LOCAL_MODIFIER_LIST=142;
    public static final int OR=36;
    public static final int LESS_THAN=25;
    public static final int SHIFT_RIGHT_ASSIGN=48;
    public static final int EXTENDS_BOUND_LIST=127;
    public static final int JAVA_SOURCE=143;
    public static final int CATCH=59;
    public static final int FALSE=69;
    public static final int INTEGER_TYPE_SUFFIX=172;
    public static final int DECIMAL_LITERAL=167;
    public static final int THROW=96;
    public static final int FOR_INIT=131;
    public static final int PROTECTED=86;
    public static final int DEC=12;
    public static final int CLASS=61;
    public static final int LBRACK=22;
    public static final int BIT_SHIFT_RIGHT=8;
    public static final int THROWS_CLAUSE=156;
    public static final int GREATER_OR_EQUAL=19;
    public static final int FOR=73;
    public static final int LOGICAL_NOT=27;
    public static final int THIS_CONSTRUCTOR_CALL=155;
    public static final int FLOAT=72;
    public static final int ABSTRACT=53;
    public static final int AND=4;
    public static final int POST_DEC=147;
    public static final int AND_ASSIGN=5;
    public static final int ANNOTATION_SCOPE=110;
    public static final int MODIFIER_LIST=145;
    public static final int STATIC_ARRAY_CREATOR=152;
    public static final int LPAREN=29;
    public static final int IF=74;
    public static final int AT=7;
    public static final int CONSTRUCTOR_DECL=124;
    public static final int ESCAPE_SEQUENCE=175;
    public static final int LABELED_STATEMENT=141;
    public static final int UNICODE_ESCAPE=176;
    public static final int BOOLEAN=55;
    public static final int SYNCHRONIZED=94;
    public static final int EXPR=126;
    public static final int CLASS_TOP_LEVEL_SCOPE=123;
    public static final int IMPLEMENTS=75;
    public static final int CONTINUE=62;
    public static final int COMMA=11;
    public static final int TRANSIENT=98;
    public static final int XOR_ASSIGN=52;
    public static final int EQUAL=18;
    public static final int LOGICAL_OR=28;
    public static final int ARGUMENT_LIST=112;
    public static final int QUALIFIED_TYPE_IDENT=151;
    public static final int IDENT=164;
    public static final int PLUS=38;
    public static final int ANNOTATION_INIT_BLOCK=105;
    public static final int HEX_LITERAL=165;
    public static final int DOT=15;
    public static final int SHIFT_LEFT_ASSIGN=46;
    public static final int FORMAL_PARAM_LIST=133;
    public static final int GENERIC_TYPE_ARG_LIST=137;
    public static final int DOTSTAR=16;
    public static final int ANNOTATION_TOP_LEVEL_SCOPE=111;
    public static final int BYTE=57;
    public static final int XOR=51;
    public static final int JAVA_ID_PART=179;
    public static final int GREATER_THAN=20;
    public static final int VOLATILE=102;
    public static final int PARENTESIZED_EXPR=146;
    public static final int LESS_OR_EQUAL=24;
    public static final int ARRAY_DECLARATOR_LIST=114;
    public static final int CLASS_STATIC_INITIALIZER=122;
    public static final int DEFAULT=63;
    public static final int OCTAL_LITERAL=166;
    public static final int HEX_DIGIT=171;
    public static final int SHORT=89;
    public static final int INSTANCEOF=76;
    public static final int MINUS=30;
    public static final int SEMI=44;
    public static final int TRUE=99;
    public static final int EXTENDS_CLAUSE=128;
    public static final int STAR_ASSIGN=50;
    public static final int VAR_DECLARATOR_LIST=162;
    public static final int COLON=10;
    public static final int ARRAY_DECLARATOR=113;
    public static final int OR_ASSIGN=37;
    public static final int ENUM=67;
    public static final int QUESTION=40;
    public static final int FINALLY=71;
    public static final int RCURLY=42;
    public static final int ASSIGN=6;
    public static final int PLUS_ASSIGN=39;
    public static final int ANNOTATION_INIT_ARRAY_ELEMENT=104;
    public static final int FUNCTION_METHOD_DECL=136;
    public static final int INTERFACE=77;
    public static final int DIV=13;
    public static final int POST_INC=148;
    public static final int LONG=80;
    public static final int CLASS_CONSTRUCTOR_CALL=120;
    public static final int PUBLIC=87;
    public static final int EXTENDS=68;
    public static final int FOR_EACH=130;
    public static final int ARRAY_INITIALIZER=116;
    public static final int CATCH_CLAUSE_LIST=119;
    public static final int SUPER_CONSTRUCTOR_CALL=153;

        public JavaASTFirstPass(TreeNodeStream input) {
            super(input);
            ruleMemo = new HashMap[288+1];
         }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g"; }

    
        
        boolean mMessageCollectionEnabled = false;
        private boolean mHasErrors = false;
        List<String> mMessages;
    
        /**
         *  Switches error message collection on or of.
         *
         *  The standard destination for parser error messages is <code>System.err</code>.
         *  However, if <code>true</code> gets passed to this method this default
         *  behaviour will be switched off and all error messages will be collected
         *  instead of written to anywhere.
         *
         *  The default value is <code>false</code>.
         *
         *  @param pNewState  <code>true</code> if error messages should be collected.
         */
        public void enableErrorMessageCollection(boolean pNewState) {
            mMessageCollectionEnabled = pNewState;
            if (mMessages == null && mMessageCollectionEnabled) {
                mMessages = new ArrayList<String>();
            }
        }
        
        /**
         *  Collects an error message or passes the error message to <code>
         *  super.emitErrorMessage(...)</code>.
         *
         *  The actual behaviour depends on whether collecting error messages
         *  has been enabled or not.
         *
         *  @param pMessage  The error message.
         */
         @Override
        public void emitErrorMessage(String pMessage) {
            if (mMessageCollectionEnabled) {
                mMessages.add(pMessage);
            } else {
                super.emitErrorMessage(pMessage);
            }
        }
        
        /**
         *  Returns collected error messages.
         *
         *  @return  A list holding collected error messages or <code>null</code> if
         *           collecting error messages hasn't been enabled. Of course, this
         *           list may be empty if no error message has been emited.
         */
        public List<String> getMessages() {
            return mMessages;
        }
        
        /**
         *  Tells if parsing a Java source has caused any error messages.
         *
         *  @return  <code>true</code> if parsing a Java source has caused at least one error message.
         */
        public boolean hasErrors() {
            return mHasErrors;
        }
        
        
        /** Members used in the extraction of the source information relevant to the program graph construction
        *
        * Atributes
        */
       	private String packagePrefix = "default";
    	private PackageIndex packages = PackageIndex.getInstance();
        



    // $ANTLR start javaSource
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:133:1: javaSource : ^( JAVA_SOURCE annotationList ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ) ;
    public final void javaSource() throws RecognitionException {
        int javaSource_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 1) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:134:5: ( ^( JAVA_SOURCE annotationList ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:134:9: ^( JAVA_SOURCE annotationList ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
            {
            match(input,JAVA_SOURCE,FOLLOW_JAVA_SOURCE_in_javaSource96); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_annotationList_in_javaSource98);
            annotationList();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:134:38: ( packageDeclaration )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==PACKAGE) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: packageDeclaration
                    {
                    pushFollow(FOLLOW_packageDeclaration_in_javaSource100);
                    packageDeclaration();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }

            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:134:58: ( importDeclaration )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==IMPORT) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: importDeclaration
            	    {
            	    pushFollow(FOLLOW_importDeclaration_in_javaSource103);
            	    importDeclaration();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:134:77: ( typeDeclaration )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==AT||LA3_0==CLASS||LA3_0==ENUM||LA3_0==INTERFACE) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: typeDeclaration
            	    {
            	    pushFollow(FOLLOW_typeDeclaration_in_javaSource106);
            	    typeDeclaration();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 1, javaSource_StartIndex); }
        }
        return ;
    }
    // $ANTLR end javaSource


    // $ANTLR start packageDeclaration
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:137:1: packageDeclaration : ^( PACKAGE temp= qualifiedIdentifier ) ;
    public final void packageDeclaration() throws RecognitionException {
        int packageDeclaration_StartIndex = input.index();
        qualifiedIdentifier_return temp = null;


        try {
            if ( backtracking>0 && alreadyParsedRule(input, 2) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:138:2: ( ^( PACKAGE temp= qualifiedIdentifier ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:138:6: ^( PACKAGE temp= qualifiedIdentifier )
            {
            match(input,PACKAGE,FOLLOW_PACKAGE_in_packageDeclaration125); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_qualifiedIdentifier_in_packageDeclaration129);
            temp=qualifiedIdentifier();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;
            if ( backtracking==0 ) {
               packagePrefix = input.getTokenStream().toString(
                input.getTreeAdaptor().getTokenStartIndex(temp.start),
                input.getTreeAdaptor().getTokenStopIndex(temp.start)); 
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
        }
        return ;
    }
    // $ANTLR end packageDeclaration


    // $ANTLR start importDeclaration
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:142:1: importDeclaration : ^( IMPORT ( STATIC )? qualifiedIdentifier ( DOTSTAR )? ) ;
    public final void importDeclaration() throws RecognitionException {
        int importDeclaration_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 3) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:143:5: ( ^( IMPORT ( STATIC )? qualifiedIdentifier ( DOTSTAR )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:143:9: ^( IMPORT ( STATIC )? qualifiedIdentifier ( DOTSTAR )? )
            {
            match(input,IMPORT,FOLLOW_IMPORT_in_importDeclaration157); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:143:18: ( STATIC )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==STATIC) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: STATIC
                    {
                    match(input,STATIC,FOLLOW_STATIC_in_importDeclaration159); if (failed) return ;

                    }
                    break;

            }

            pushFollow(FOLLOW_qualifiedIdentifier_in_importDeclaration162);
            qualifiedIdentifier();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:143:46: ( DOTSTAR )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==DOTSTAR) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: DOTSTAR
                    {
                    match(input,DOTSTAR,FOLLOW_DOTSTAR_in_importDeclaration164); if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
        }
        return ;
    }
    // $ANTLR end importDeclaration


    // $ANTLR start typeDeclaration
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:146:1: typeDeclaration : ( ^( CLASS modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? ( implementsClause )? classTopLevelScope ) | ^( INTERFACE modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? interfaceTopLevelScope ) | ^( ENUM modifierList temp= IDENT ( implementsClause )? enumTopLevelScope ) | ^( AT modifierList IDENT annotationTopLevelScope ) );
    public final void typeDeclaration() throws RecognitionException {
        int typeDeclaration_StartIndex = input.index();
        CommonTree temp=null;

        try {
            if ( backtracking>0 && alreadyParsedRule(input, 4) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:151:5: ( ^( CLASS modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? ( implementsClause )? classTopLevelScope ) | ^( INTERFACE modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? interfaceTopLevelScope ) | ^( ENUM modifierList temp= IDENT ( implementsClause )? enumTopLevelScope ) | ^( AT modifierList IDENT annotationTopLevelScope ) )
            int alt12=4;
            switch ( input.LA(1) ) {
            case CLASS:
                {
                alt12=1;
                }
                break;
            case INTERFACE:
                {
                alt12=2;
                }
                break;
            case ENUM:
                {
                alt12=3;
                }
                break;
            case AT:
                {
                alt12=4;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("146:1: typeDeclaration : ( ^( CLASS modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? ( implementsClause )? classTopLevelScope ) | ^( INTERFACE modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? interfaceTopLevelScope ) | ^( ENUM modifierList temp= IDENT ( implementsClause )? enumTopLevelScope ) | ^( AT modifierList IDENT annotationTopLevelScope ) );", 12, 0, input);

                throw nvae;
            }

            switch (alt12) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:151:9: ^( CLASS modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? ( implementsClause )? classTopLevelScope )
                    {
                    match(input,CLASS,FOLLOW_CLASS_in_typeDeclaration192); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_typeDeclaration194);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    temp=(CommonTree)input.LT(1);
                    match(input,IDENT,FOLLOW_IDENT_in_typeDeclaration198); if (failed) return ;
                    if ( backtracking==0 ) {
                       packages.addType( packagePrefix, temp.getText()); 
                    }
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:153:6: ( genericTypeParameterList )?
                    int alt6=2;
                    int LA6_0 = input.LA(1);

                    if ( (LA6_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt6=1;
                    }
                    switch (alt6) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_typeDeclaration213);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:153:32: ( extendsClause )?
                    int alt7=2;
                    int LA7_0 = input.LA(1);

                    if ( (LA7_0==EXTENDS_CLAUSE) ) {
                        alt7=1;
                    }
                    switch (alt7) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: extendsClause
                            {
                            pushFollow(FOLLOW_extendsClause_in_typeDeclaration216);
                            extendsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:153:47: ( implementsClause )?
                    int alt8=2;
                    int LA8_0 = input.LA(1);

                    if ( (LA8_0==IMPLEMENTS_CLAUSE) ) {
                        alt8=1;
                    }
                    switch (alt8) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: implementsClause
                            {
                            pushFollow(FOLLOW_implementsClause_in_typeDeclaration219);
                            implementsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_classTopLevelScope_in_typeDeclaration222);
                    classTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:155:9: ^( INTERFACE modifierList temp= IDENT ( genericTypeParameterList )? ( extendsClause )? interfaceTopLevelScope )
                    {
                    match(input,INTERFACE,FOLLOW_INTERFACE_in_typeDeclaration242); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_typeDeclaration244);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    temp=(CommonTree)input.LT(1);
                    match(input,IDENT,FOLLOW_IDENT_in_typeDeclaration248); if (failed) return ;
                    if ( backtracking==0 ) {
                       packages.addType( packagePrefix, temp.getText()); 
                    }
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:157:6: ( genericTypeParameterList )?
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt9=1;
                    }
                    switch (alt9) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_typeDeclaration262);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:157:32: ( extendsClause )?
                    int alt10=2;
                    int LA10_0 = input.LA(1);

                    if ( (LA10_0==EXTENDS_CLAUSE) ) {
                        alt10=1;
                    }
                    switch (alt10) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: extendsClause
                            {
                            pushFollow(FOLLOW_extendsClause_in_typeDeclaration265);
                            extendsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_interfaceTopLevelScope_in_typeDeclaration268);
                    interfaceTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:159:9: ^( ENUM modifierList temp= IDENT ( implementsClause )? enumTopLevelScope )
                    {
                    match(input,ENUM,FOLLOW_ENUM_in_typeDeclaration286); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_typeDeclaration288);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    temp=(CommonTree)input.LT(1);
                    match(input,IDENT,FOLLOW_IDENT_in_typeDeclaration292); if (failed) return ;
                    if ( backtracking==0 ) {
                       packages.addType( packagePrefix, temp.getText()); 
                    }
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:161:6: ( implementsClause )?
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0==IMPLEMENTS_CLAUSE) ) {
                        alt11=1;
                    }
                    switch (alt11) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: implementsClause
                            {
                            pushFollow(FOLLOW_implementsClause_in_typeDeclaration306);
                            implementsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_enumTopLevelScope_in_typeDeclaration309);
                    enumTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:163:9: ^( AT modifierList IDENT annotationTopLevelScope )
                    {
                    match(input,AT,FOLLOW_AT_in_typeDeclaration327); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_typeDeclaration329);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    match(input,IDENT,FOLLOW_IDENT_in_typeDeclaration331); if (failed) return ;
                    pushFollow(FOLLOW_annotationTopLevelScope_in_typeDeclaration333);
                    annotationTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 4, typeDeclaration_StartIndex); }
        }
        return ;
    }
    // $ANTLR end typeDeclaration


    // $ANTLR start extendsClause
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:166:1: extendsClause : ^( EXTENDS_CLAUSE ( type )+ ) ;
    public final void extendsClause() throws RecognitionException {
        int extendsClause_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 5) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:168:5: ( ^( EXTENDS_CLAUSE ( type )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:168:9: ^( EXTENDS_CLAUSE ( type )+ )
            {
            match(input,EXTENDS_CLAUSE,FOLLOW_EXTENDS_CLAUSE_in_extendsClause370); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:168:26: ( type )+
            int cnt13=0;
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==TYPE) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: type
            	    {
            	    pushFollow(FOLLOW_type_in_extendsClause372);
            	    type();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt13 >= 1 ) break loop13;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(13, input);
                        throw eee;
                }
                cnt13++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 5, extendsClause_StartIndex); }
        }
        return ;
    }
    // $ANTLR end extendsClause


    // $ANTLR start implementsClause
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:171:1: implementsClause : ^( IMPLEMENTS_CLAUSE ( type )+ ) ;
    public final void implementsClause() throws RecognitionException {
        int implementsClause_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 6) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:172:5: ( ^( IMPLEMENTS_CLAUSE ( type )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:172:9: ^( IMPLEMENTS_CLAUSE ( type )+ )
            {
            match(input,IMPLEMENTS_CLAUSE,FOLLOW_IMPLEMENTS_CLAUSE_in_implementsClause401); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:172:29: ( type )+
            int cnt14=0;
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==TYPE) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: type
            	    {
            	    pushFollow(FOLLOW_type_in_implementsClause403);
            	    type();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt14 >= 1 ) break loop14;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(14, input);
                        throw eee;
                }
                cnt14++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 6, implementsClause_StartIndex); }
        }
        return ;
    }
    // $ANTLR end implementsClause


    // $ANTLR start genericTypeParameterList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:175:1: genericTypeParameterList : ^( GENERIC_TYPE_PARAM_LIST ( genericTypeParameter )+ ) ;
    public final void genericTypeParameterList() throws RecognitionException {
        int genericTypeParameterList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 7) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:176:5: ( ^( GENERIC_TYPE_PARAM_LIST ( genericTypeParameter )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:176:9: ^( GENERIC_TYPE_PARAM_LIST ( genericTypeParameter )+ )
            {
            match(input,GENERIC_TYPE_PARAM_LIST,FOLLOW_GENERIC_TYPE_PARAM_LIST_in_genericTypeParameterList433); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:176:35: ( genericTypeParameter )+
            int cnt15=0;
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==IDENT) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameter
            	    {
            	    pushFollow(FOLLOW_genericTypeParameter_in_genericTypeParameterList435);
            	    genericTypeParameter();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt15 >= 1 ) break loop15;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(15, input);
                        throw eee;
                }
                cnt15++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 7, genericTypeParameterList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end genericTypeParameterList


    // $ANTLR start genericTypeParameter
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:179:1: genericTypeParameter : ^( IDENT ( bound )? ) ;
    public final void genericTypeParameter() throws RecognitionException {
        int genericTypeParameter_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 8) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:180:5: ( ^( IDENT ( bound )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:180:9: ^( IDENT ( bound )? )
            {
            match(input,IDENT,FOLLOW_IDENT_in_genericTypeParameter457); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:180:17: ( bound )?
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==EXTENDS_BOUND_LIST) ) {
                    alt16=1;
                }
                switch (alt16) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: bound
                        {
                        pushFollow(FOLLOW_bound_in_genericTypeParameter459);
                        bound();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;

                }


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 8, genericTypeParameter_StartIndex); }
        }
        return ;
    }
    // $ANTLR end genericTypeParameter


    // $ANTLR start bound
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:183:1: bound : ^( EXTENDS_BOUND_LIST ( type )+ ) ;
    public final void bound() throws RecognitionException {
        int bound_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 9) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:184:5: ( ^( EXTENDS_BOUND_LIST ( type )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:184:9: ^( EXTENDS_BOUND_LIST ( type )+ )
            {
            match(input,EXTENDS_BOUND_LIST,FOLLOW_EXTENDS_BOUND_LIST_in_bound489); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:184:30: ( type )+
            int cnt17=0;
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==TYPE) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: type
            	    {
            	    pushFollow(FOLLOW_type_in_bound491);
            	    type();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt17 >= 1 ) break loop17;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(17, input);
                        throw eee;
                }
                cnt17++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 9, bound_StartIndex); }
        }
        return ;
    }
    // $ANTLR end bound


    // $ANTLR start enumTopLevelScope
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:187:1: enumTopLevelScope : ^( ENUM_TOP_LEVEL_SCOPE ( enumConstant )+ ( classTopLevelScope )? ) ;
    public final void enumTopLevelScope() throws RecognitionException {
        int enumTopLevelScope_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 10) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:188:5: ( ^( ENUM_TOP_LEVEL_SCOPE ( enumConstant )+ ( classTopLevelScope )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:188:9: ^( ENUM_TOP_LEVEL_SCOPE ( enumConstant )+ ( classTopLevelScope )? )
            {
            match(input,ENUM_TOP_LEVEL_SCOPE,FOLLOW_ENUM_TOP_LEVEL_SCOPE_in_enumTopLevelScope513); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:188:32: ( enumConstant )+
            int cnt18=0;
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==IDENT) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: enumConstant
            	    {
            	    pushFollow(FOLLOW_enumConstant_in_enumTopLevelScope515);
            	    enumConstant();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt18 >= 1 ) break loop18;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(18, input);
                        throw eee;
                }
                cnt18++;
            } while (true);

            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:188:46: ( classTopLevelScope )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==CLASS_TOP_LEVEL_SCOPE) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: classTopLevelScope
                    {
                    pushFollow(FOLLOW_classTopLevelScope_in_enumTopLevelScope518);
                    classTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 10, enumTopLevelScope_StartIndex); }
        }
        return ;
    }
    // $ANTLR end enumTopLevelScope


    // $ANTLR start enumConstant
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:191:1: enumConstant : ^( IDENT annotationList ( arguments )? ( classTopLevelScope )? ) ;
    public final void enumConstant() throws RecognitionException {
        int enumConstant_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 11) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:192:5: ( ^( IDENT annotationList ( arguments )? ( classTopLevelScope )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:192:9: ^( IDENT annotationList ( arguments )? ( classTopLevelScope )? )
            {
            match(input,IDENT,FOLLOW_IDENT_in_enumConstant544); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_annotationList_in_enumConstant546);
            annotationList();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:192:32: ( arguments )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==ARGUMENT_LIST) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: arguments
                    {
                    pushFollow(FOLLOW_arguments_in_enumConstant548);
                    arguments();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }

            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:192:43: ( classTopLevelScope )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==CLASS_TOP_LEVEL_SCOPE) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: classTopLevelScope
                    {
                    pushFollow(FOLLOW_classTopLevelScope_in_enumConstant551);
                    classTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 11, enumConstant_StartIndex); }
        }
        return ;
    }
    // $ANTLR end enumConstant


    // $ANTLR start classTopLevelScope
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:196:1: classTopLevelScope : ^( CLASS_TOP_LEVEL_SCOPE ( classScopeDeclarations )* ) ;
    public final void classTopLevelScope() throws RecognitionException {
        int classTopLevelScope_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 12) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:197:5: ( ^( CLASS_TOP_LEVEL_SCOPE ( classScopeDeclarations )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:197:9: ^( CLASS_TOP_LEVEL_SCOPE ( classScopeDeclarations )* )
            {
            match(input,CLASS_TOP_LEVEL_SCOPE,FOLLOW_CLASS_TOP_LEVEL_SCOPE_in_classTopLevelScope582); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:197:33: ( classScopeDeclarations )*
                loop22:
                do {
                    int alt22=2;
                    int LA22_0 = input.LA(1);

                    if ( (LA22_0==AT||LA22_0==CLASS||LA22_0==ENUM||LA22_0==INTERFACE||(LA22_0>=CLASS_INSTANCE_INITIALIZER && LA22_0<=CLASS_STATIC_INITIALIZER)||LA22_0==CONSTRUCTOR_DECL||LA22_0==FUNCTION_METHOD_DECL||LA22_0==VAR_DECLARATION||LA22_0==VOID_METHOD_DECL) ) {
                        alt22=1;
                    }


                    switch (alt22) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: classScopeDeclarations
                	    {
                	    pushFollow(FOLLOW_classScopeDeclarations_in_classTopLevelScope584);
                	    classScopeDeclarations();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop22;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 12, classTopLevelScope_StartIndex); }
        }
        return ;
    }
    // $ANTLR end classTopLevelScope


    // $ANTLR start classScopeDeclarations
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:200:1: classScopeDeclarations : ( ^( CLASS_INSTANCE_INITIALIZER block ) | ^( CLASS_STATIC_INITIALIZER block ) | ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ( block )? ) | ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ( block )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | ^( CONSTRUCTOR_DECL modifierList ( genericTypeParameterList )? formalParameterList ( throwsClause )? block ) | typeDeclaration );
    public final void classScopeDeclarations() throws RecognitionException {
        int classScopeDeclarations_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 13) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:201:5: ( ^( CLASS_INSTANCE_INITIALIZER block ) | ^( CLASS_STATIC_INITIALIZER block ) | ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ( block )? ) | ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ( block )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | ^( CONSTRUCTOR_DECL modifierList ( genericTypeParameterList )? formalParameterList ( throwsClause )? block ) | typeDeclaration )
            int alt32=7;
            switch ( input.LA(1) ) {
            case CLASS_INSTANCE_INITIALIZER:
                {
                alt32=1;
                }
                break;
            case CLASS_STATIC_INITIALIZER:
                {
                alt32=2;
                }
                break;
            case FUNCTION_METHOD_DECL:
                {
                alt32=3;
                }
                break;
            case VOID_METHOD_DECL:
                {
                alt32=4;
                }
                break;
            case VAR_DECLARATION:
                {
                alt32=5;
                }
                break;
            case CONSTRUCTOR_DECL:
                {
                alt32=6;
                }
                break;
            case AT:
            case CLASS:
            case ENUM:
            case INTERFACE:
                {
                alt32=7;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("200:1: classScopeDeclarations : ( ^( CLASS_INSTANCE_INITIALIZER block ) | ^( CLASS_STATIC_INITIALIZER block ) | ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ( block )? ) | ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ( block )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | ^( CONSTRUCTOR_DECL modifierList ( genericTypeParameterList )? formalParameterList ( throwsClause )? block ) | typeDeclaration );", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:201:9: ^( CLASS_INSTANCE_INITIALIZER block )
                    {
                    match(input,CLASS_INSTANCE_INITIALIZER,FOLLOW_CLASS_INSTANCE_INITIALIZER_in_classScopeDeclarations610); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_block_in_classScopeDeclarations612);
                    block();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:202:9: ^( CLASS_STATIC_INITIALIZER block )
                    {
                    match(input,CLASS_STATIC_INITIALIZER,FOLLOW_CLASS_STATIC_INITIALIZER_in_classScopeDeclarations624); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_block_in_classScopeDeclarations626);
                    block();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:203:9: ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ( block )? )
                    {
                    match(input,FUNCTION_METHOD_DECL,FOLLOW_FUNCTION_METHOD_DECL_in_classScopeDeclarations638); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_classScopeDeclarations640);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:203:45: ( genericTypeParameterList )?
                    int alt23=2;
                    int LA23_0 = input.LA(1);

                    if ( (LA23_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt23=1;
                    }
                    switch (alt23) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_classScopeDeclarations642);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_type_in_classScopeDeclarations645);
                    type();
                    _fsp--;
                    if (failed) return ;
                    match(input,IDENT,FOLLOW_IDENT_in_classScopeDeclarations647); if (failed) return ;
                    pushFollow(FOLLOW_formalParameterList_in_classScopeDeclarations649);
                    formalParameterList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:203:102: ( arrayDeclaratorList )?
                    int alt24=2;
                    int LA24_0 = input.LA(1);

                    if ( (LA24_0==ARRAY_DECLARATOR_LIST) ) {
                        alt24=1;
                    }
                    switch (alt24) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: arrayDeclaratorList
                            {
                            pushFollow(FOLLOW_arrayDeclaratorList_in_classScopeDeclarations651);
                            arrayDeclaratorList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:203:123: ( throwsClause )?
                    int alt25=2;
                    int LA25_0 = input.LA(1);

                    if ( (LA25_0==THROWS_CLAUSE) ) {
                        alt25=1;
                    }
                    switch (alt25) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: throwsClause
                            {
                            pushFollow(FOLLOW_throwsClause_in_classScopeDeclarations654);
                            throwsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:203:137: ( block )?
                    int alt26=2;
                    int LA26_0 = input.LA(1);

                    if ( (LA26_0==BLOCK_SCOPE) ) {
                        alt26=1;
                    }
                    switch (alt26) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: block
                            {
                            pushFollow(FOLLOW_block_in_classScopeDeclarations657);
                            block();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:204:9: ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ( block )? )
                    {
                    match(input,VOID_METHOD_DECL,FOLLOW_VOID_METHOD_DECL_in_classScopeDeclarations670); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_classScopeDeclarations672);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:204:41: ( genericTypeParameterList )?
                    int alt27=2;
                    int LA27_0 = input.LA(1);

                    if ( (LA27_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt27=1;
                    }
                    switch (alt27) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_classScopeDeclarations674);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    match(input,IDENT,FOLLOW_IDENT_in_classScopeDeclarations677); if (failed) return ;
                    pushFollow(FOLLOW_formalParameterList_in_classScopeDeclarations679);
                    formalParameterList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:204:93: ( throwsClause )?
                    int alt28=2;
                    int LA28_0 = input.LA(1);

                    if ( (LA28_0==THROWS_CLAUSE) ) {
                        alt28=1;
                    }
                    switch (alt28) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: throwsClause
                            {
                            pushFollow(FOLLOW_throwsClause_in_classScopeDeclarations681);
                            throwsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:204:107: ( block )?
                    int alt29=2;
                    int LA29_0 = input.LA(1);

                    if ( (LA29_0==BLOCK_SCOPE) ) {
                        alt29=1;
                    }
                    switch (alt29) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: block
                            {
                            pushFollow(FOLLOW_block_in_classScopeDeclarations684);
                            block();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 5 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:205:9: ^( VAR_DECLARATION modifierList type variableDeclaratorList )
                    {
                    match(input,VAR_DECLARATION,FOLLOW_VAR_DECLARATION_in_classScopeDeclarations697); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_classScopeDeclarations699);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_type_in_classScopeDeclarations701);
                    type();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_variableDeclaratorList_in_classScopeDeclarations703);
                    variableDeclaratorList();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 6 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:206:9: ^( CONSTRUCTOR_DECL modifierList ( genericTypeParameterList )? formalParameterList ( throwsClause )? block )
                    {
                    match(input,CONSTRUCTOR_DECL,FOLLOW_CONSTRUCTOR_DECL_in_classScopeDeclarations715); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_classScopeDeclarations717);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:206:41: ( genericTypeParameterList )?
                    int alt30=2;
                    int LA30_0 = input.LA(1);

                    if ( (LA30_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt30=1;
                    }
                    switch (alt30) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_classScopeDeclarations719);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_formalParameterList_in_classScopeDeclarations722);
                    formalParameterList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:206:87: ( throwsClause )?
                    int alt31=2;
                    int LA31_0 = input.LA(1);

                    if ( (LA31_0==THROWS_CLAUSE) ) {
                        alt31=1;
                    }
                    switch (alt31) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: throwsClause
                            {
                            pushFollow(FOLLOW_throwsClause_in_classScopeDeclarations724);
                            throwsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_block_in_classScopeDeclarations727);
                    block();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 7 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:207:9: typeDeclaration
                    {
                    pushFollow(FOLLOW_typeDeclaration_in_classScopeDeclarations738);
                    typeDeclaration();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 13, classScopeDeclarations_StartIndex); }
        }
        return ;
    }
    // $ANTLR end classScopeDeclarations


    // $ANTLR start interfaceTopLevelScope
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:210:1: interfaceTopLevelScope : ^( INTERFACE_TOP_LEVEL_SCOPE ( interfaceScopeDeclarations )* ) ;
    public final void interfaceTopLevelScope() throws RecognitionException {
        int interfaceTopLevelScope_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 14) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:211:5: ( ^( INTERFACE_TOP_LEVEL_SCOPE ( interfaceScopeDeclarations )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:211:9: ^( INTERFACE_TOP_LEVEL_SCOPE ( interfaceScopeDeclarations )* )
            {
            match(input,INTERFACE_TOP_LEVEL_SCOPE,FOLLOW_INTERFACE_TOP_LEVEL_SCOPE_in_interfaceTopLevelScope762); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:211:37: ( interfaceScopeDeclarations )*
                loop33:
                do {
                    int alt33=2;
                    int LA33_0 = input.LA(1);

                    if ( (LA33_0==AT||LA33_0==CLASS||LA33_0==ENUM||LA33_0==INTERFACE||LA33_0==FUNCTION_METHOD_DECL||LA33_0==VAR_DECLARATION||LA33_0==VOID_METHOD_DECL) ) {
                        alt33=1;
                    }


                    switch (alt33) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: interfaceScopeDeclarations
                	    {
                	    pushFollow(FOLLOW_interfaceScopeDeclarations_in_interfaceTopLevelScope764);
                	    interfaceScopeDeclarations();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop33;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 14, interfaceTopLevelScope_StartIndex); }
        }
        return ;
    }
    // $ANTLR end interfaceTopLevelScope


    // $ANTLR start interfaceScopeDeclarations
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:214:1: interfaceScopeDeclarations : ( ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ) | ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | typeDeclaration );
    public final void interfaceScopeDeclarations() throws RecognitionException {
        int interfaceScopeDeclarations_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 15) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:215:5: ( ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ) | ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | typeDeclaration )
            int alt39=4;
            switch ( input.LA(1) ) {
            case FUNCTION_METHOD_DECL:
                {
                alt39=1;
                }
                break;
            case VOID_METHOD_DECL:
                {
                alt39=2;
                }
                break;
            case VAR_DECLARATION:
                {
                alt39=3;
                }
                break;
            case AT:
            case CLASS:
            case ENUM:
            case INTERFACE:
                {
                alt39=4;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("214:1: interfaceScopeDeclarations : ( ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? ) | ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | typeDeclaration );", 39, 0, input);

                throw nvae;
            }

            switch (alt39) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:215:9: ^( FUNCTION_METHOD_DECL modifierList ( genericTypeParameterList )? type IDENT formalParameterList ( arrayDeclaratorList )? ( throwsClause )? )
                    {
                    match(input,FUNCTION_METHOD_DECL,FOLLOW_FUNCTION_METHOD_DECL_in_interfaceScopeDeclarations790); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_interfaceScopeDeclarations792);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:215:45: ( genericTypeParameterList )?
                    int alt34=2;
                    int LA34_0 = input.LA(1);

                    if ( (LA34_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt34=1;
                    }
                    switch (alt34) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_interfaceScopeDeclarations794);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_type_in_interfaceScopeDeclarations797);
                    type();
                    _fsp--;
                    if (failed) return ;
                    match(input,IDENT,FOLLOW_IDENT_in_interfaceScopeDeclarations799); if (failed) return ;
                    pushFollow(FOLLOW_formalParameterList_in_interfaceScopeDeclarations801);
                    formalParameterList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:215:102: ( arrayDeclaratorList )?
                    int alt35=2;
                    int LA35_0 = input.LA(1);

                    if ( (LA35_0==ARRAY_DECLARATOR_LIST) ) {
                        alt35=1;
                    }
                    switch (alt35) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: arrayDeclaratorList
                            {
                            pushFollow(FOLLOW_arrayDeclaratorList_in_interfaceScopeDeclarations803);
                            arrayDeclaratorList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:215:123: ( throwsClause )?
                    int alt36=2;
                    int LA36_0 = input.LA(1);

                    if ( (LA36_0==THROWS_CLAUSE) ) {
                        alt36=1;
                    }
                    switch (alt36) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: throwsClause
                            {
                            pushFollow(FOLLOW_throwsClause_in_interfaceScopeDeclarations806);
                            throwsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:216:9: ^( VOID_METHOD_DECL modifierList ( genericTypeParameterList )? IDENT formalParameterList ( throwsClause )? )
                    {
                    match(input,VOID_METHOD_DECL,FOLLOW_VOID_METHOD_DECL_in_interfaceScopeDeclarations819); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_interfaceScopeDeclarations821);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:216:41: ( genericTypeParameterList )?
                    int alt37=2;
                    int LA37_0 = input.LA(1);

                    if ( (LA37_0==GENERIC_TYPE_PARAM_LIST) ) {
                        alt37=1;
                    }
                    switch (alt37) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeParameterList
                            {
                            pushFollow(FOLLOW_genericTypeParameterList_in_interfaceScopeDeclarations823);
                            genericTypeParameterList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    match(input,IDENT,FOLLOW_IDENT_in_interfaceScopeDeclarations826); if (failed) return ;
                    pushFollow(FOLLOW_formalParameterList_in_interfaceScopeDeclarations828);
                    formalParameterList();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:216:93: ( throwsClause )?
                    int alt38=2;
                    int LA38_0 = input.LA(1);

                    if ( (LA38_0==THROWS_CLAUSE) ) {
                        alt38=1;
                    }
                    switch (alt38) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: throwsClause
                            {
                            pushFollow(FOLLOW_throwsClause_in_interfaceScopeDeclarations830);
                            throwsClause();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:220:9: ^( VAR_DECLARATION modifierList type variableDeclaratorList )
                    {
                    match(input,VAR_DECLARATION,FOLLOW_VAR_DECLARATION_in_interfaceScopeDeclarations921); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_interfaceScopeDeclarations923);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_type_in_interfaceScopeDeclarations925);
                    type();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_variableDeclaratorList_in_interfaceScopeDeclarations927);
                    variableDeclaratorList();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:221:9: typeDeclaration
                    {
                    pushFollow(FOLLOW_typeDeclaration_in_interfaceScopeDeclarations938);
                    typeDeclaration();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 15, interfaceScopeDeclarations_StartIndex); }
        }
        return ;
    }
    // $ANTLR end interfaceScopeDeclarations


    // $ANTLR start variableDeclaratorList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:224:1: variableDeclaratorList : ^( VAR_DECLARATOR_LIST ( variableDeclarator )+ ) ;
    public final void variableDeclaratorList() throws RecognitionException {
        int variableDeclaratorList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 16) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:225:5: ( ^( VAR_DECLARATOR_LIST ( variableDeclarator )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:225:9: ^( VAR_DECLARATOR_LIST ( variableDeclarator )+ )
            {
            match(input,VAR_DECLARATOR_LIST,FOLLOW_VAR_DECLARATOR_LIST_in_variableDeclaratorList958); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:225:31: ( variableDeclarator )+
            int cnt40=0;
            loop40:
            do {
                int alt40=2;
                int LA40_0 = input.LA(1);

                if ( (LA40_0==VAR_DECLARATOR) ) {
                    alt40=1;
                }


                switch (alt40) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: variableDeclarator
            	    {
            	    pushFollow(FOLLOW_variableDeclarator_in_variableDeclaratorList960);
            	    variableDeclarator();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt40 >= 1 ) break loop40;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(40, input);
                        throw eee;
                }
                cnt40++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 16, variableDeclaratorList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end variableDeclaratorList


    // $ANTLR start variableDeclarator
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:228:1: variableDeclarator : ^( VAR_DECLARATOR variableDeclaratorId ( variableInitializer )? ) ;
    public final void variableDeclarator() throws RecognitionException {
        int variableDeclarator_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 17) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:229:5: ( ^( VAR_DECLARATOR variableDeclaratorId ( variableInitializer )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:229:9: ^( VAR_DECLARATOR variableDeclaratorId ( variableInitializer )? )
            {
            match(input,VAR_DECLARATOR,FOLLOW_VAR_DECLARATOR_in_variableDeclarator982); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_variableDeclaratorId_in_variableDeclarator984);
            variableDeclaratorId();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:229:47: ( variableInitializer )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==ARRAY_INITIALIZER||LA41_0==EXPR) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: variableInitializer
                    {
                    pushFollow(FOLLOW_variableInitializer_in_variableDeclarator986);
                    variableInitializer();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 17, variableDeclarator_StartIndex); }
        }
        return ;
    }
    // $ANTLR end variableDeclarator


    // $ANTLR start variableDeclaratorId
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:232:1: variableDeclaratorId : ^( IDENT ( arrayDeclaratorList )? ) ;
    public final void variableDeclaratorId() throws RecognitionException {
        int variableDeclaratorId_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 18) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:233:5: ( ^( IDENT ( arrayDeclaratorList )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:233:9: ^( IDENT ( arrayDeclaratorList )? )
            {
            match(input,IDENT,FOLLOW_IDENT_in_variableDeclaratorId1012); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:233:17: ( arrayDeclaratorList )?
                int alt42=2;
                int LA42_0 = input.LA(1);

                if ( (LA42_0==ARRAY_DECLARATOR_LIST) ) {
                    alt42=1;
                }
                switch (alt42) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: arrayDeclaratorList
                        {
                        pushFollow(FOLLOW_arrayDeclaratorList_in_variableDeclaratorId1014);
                        arrayDeclaratorList();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;

                }


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 18, variableDeclaratorId_StartIndex); }
        }
        return ;
    }
    // $ANTLR end variableDeclaratorId


    // $ANTLR start variableInitializer
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:236:1: variableInitializer : ( arrayInitializer | expression );
    public final void variableInitializer() throws RecognitionException {
        int variableInitializer_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 19) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:237:5: ( arrayInitializer | expression )
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( (LA43_0==ARRAY_INITIALIZER) ) {
                alt43=1;
            }
            else if ( (LA43_0==EXPR) ) {
                alt43=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("236:1: variableInitializer : ( arrayInitializer | expression );", 43, 0, input);

                throw nvae;
            }
            switch (alt43) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:237:9: arrayInitializer
                    {
                    pushFollow(FOLLOW_arrayInitializer_in_variableInitializer1035);
                    arrayInitializer();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:238:9: expression
                    {
                    pushFollow(FOLLOW_expression_in_variableInitializer1045);
                    expression();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 19, variableInitializer_StartIndex); }
        }
        return ;
    }
    // $ANTLR end variableInitializer


    // $ANTLR start arrayDeclarator
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:241:1: arrayDeclarator : LBRACK RBRACK ;
    public final void arrayDeclarator() throws RecognitionException {
        int arrayDeclarator_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 20) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:242:5: ( LBRACK RBRACK )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:242:9: LBRACK RBRACK
            {
            match(input,LBRACK,FOLLOW_LBRACK_in_arrayDeclarator1064); if (failed) return ;
            match(input,RBRACK,FOLLOW_RBRACK_in_arrayDeclarator1066); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 20, arrayDeclarator_StartIndex); }
        }
        return ;
    }
    // $ANTLR end arrayDeclarator


    // $ANTLR start arrayDeclaratorList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:245:1: arrayDeclaratorList : ^( ARRAY_DECLARATOR_LIST ( ARRAY_DECLARATOR )* ) ;
    public final void arrayDeclaratorList() throws RecognitionException {
        int arrayDeclaratorList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 21) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:246:5: ( ^( ARRAY_DECLARATOR_LIST ( ARRAY_DECLARATOR )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:246:9: ^( ARRAY_DECLARATOR_LIST ( ARRAY_DECLARATOR )* )
            {
            match(input,ARRAY_DECLARATOR_LIST,FOLLOW_ARRAY_DECLARATOR_LIST_in_arrayDeclaratorList1086); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:246:33: ( ARRAY_DECLARATOR )*
                loop44:
                do {
                    int alt44=2;
                    int LA44_0 = input.LA(1);

                    if ( (LA44_0==ARRAY_DECLARATOR) ) {
                        alt44=1;
                    }


                    switch (alt44) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: ARRAY_DECLARATOR
                	    {
                	    match(input,ARRAY_DECLARATOR,FOLLOW_ARRAY_DECLARATOR_in_arrayDeclaratorList1088); if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop44;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 21, arrayDeclaratorList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end arrayDeclaratorList


    // $ANTLR start arrayInitializer
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:249:1: arrayInitializer : ^( ARRAY_INITIALIZER ( variableInitializer )* ) ;
    public final void arrayInitializer() throws RecognitionException {
        int arrayInitializer_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 22) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:250:5: ( ^( ARRAY_INITIALIZER ( variableInitializer )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:250:9: ^( ARRAY_INITIALIZER ( variableInitializer )* )
            {
            match(input,ARRAY_INITIALIZER,FOLLOW_ARRAY_INITIALIZER_in_arrayInitializer1116); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:250:29: ( variableInitializer )*
                loop45:
                do {
                    int alt45=2;
                    int LA45_0 = input.LA(1);

                    if ( (LA45_0==ARRAY_INITIALIZER||LA45_0==EXPR) ) {
                        alt45=1;
                    }


                    switch (alt45) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: variableInitializer
                	    {
                	    pushFollow(FOLLOW_variableInitializer_in_arrayInitializer1118);
                	    variableInitializer();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop45;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 22, arrayInitializer_StartIndex); }
        }
        return ;
    }
    // $ANTLR end arrayInitializer


    // $ANTLR start throwsClause
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:253:1: throwsClause : ^( THROWS_CLAUSE ( qualifiedIdentifier )+ ) ;
    public final void throwsClause() throws RecognitionException {
        int throwsClause_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 23) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:254:5: ( ^( THROWS_CLAUSE ( qualifiedIdentifier )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:254:9: ^( THROWS_CLAUSE ( qualifiedIdentifier )+ )
            {
            match(input,THROWS_CLAUSE,FOLLOW_THROWS_CLAUSE_in_throwsClause1140); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:254:25: ( qualifiedIdentifier )+
            int cnt46=0;
            loop46:
            do {
                int alt46=2;
                int LA46_0 = input.LA(1);

                if ( (LA46_0==DOT||LA46_0==IDENT) ) {
                    alt46=1;
                }


                switch (alt46) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: qualifiedIdentifier
            	    {
            	    pushFollow(FOLLOW_qualifiedIdentifier_in_throwsClause1142);
            	    qualifiedIdentifier();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt46 >= 1 ) break loop46;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(46, input);
                        throw eee;
                }
                cnt46++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 23, throwsClause_StartIndex); }
        }
        return ;
    }
    // $ANTLR end throwsClause


    // $ANTLR start modifierList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:257:1: modifierList : ^( MODIFIER_LIST ( modifier )* ) ;
    public final void modifierList() throws RecognitionException {
        int modifierList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 24) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:258:5: ( ^( MODIFIER_LIST ( modifier )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:258:9: ^( MODIFIER_LIST ( modifier )* )
            {
            match(input,MODIFIER_LIST,FOLLOW_MODIFIER_LIST_in_modifierList1164); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:258:25: ( modifier )*
                loop47:
                do {
                    int alt47=2;
                    int LA47_0 = input.LA(1);

                    if ( (LA47_0==AT||LA47_0==ABSTRACT||LA47_0==FINAL||LA47_0==NATIVE||(LA47_0>=PRIVATE && LA47_0<=PUBLIC)||(LA47_0>=STATIC && LA47_0<=STRICTFP)||LA47_0==SYNCHRONIZED||LA47_0==TRANSIENT||LA47_0==VOLATILE) ) {
                        alt47=1;
                    }


                    switch (alt47) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: modifier
                	    {
                	    pushFollow(FOLLOW_modifier_in_modifierList1166);
                	    modifier();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop47;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 24, modifierList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end modifierList


    // $ANTLR start modifier
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:261:1: modifier : ( PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | NATIVE | SYNCHRONIZED | TRANSIENT | VOLATILE | STRICTFP | localModifier );
    public final void modifier() throws RecognitionException {
        int modifier_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 25) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:262:5: ( PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | NATIVE | SYNCHRONIZED | TRANSIENT | VOLATILE | STRICTFP | localModifier )
            int alt48=11;
            switch ( input.LA(1) ) {
            case PUBLIC:
                {
                alt48=1;
                }
                break;
            case PROTECTED:
                {
                alt48=2;
                }
                break;
            case PRIVATE:
                {
                alt48=3;
                }
                break;
            case STATIC:
                {
                alt48=4;
                }
                break;
            case ABSTRACT:
                {
                alt48=5;
                }
                break;
            case NATIVE:
                {
                alt48=6;
                }
                break;
            case SYNCHRONIZED:
                {
                alt48=7;
                }
                break;
            case TRANSIENT:
                {
                alt48=8;
                }
                break;
            case VOLATILE:
                {
                alt48=9;
                }
                break;
            case STRICTFP:
                {
                alt48=10;
                }
                break;
            case AT:
            case FINAL:
                {
                alt48=11;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("261:1: modifier : ( PUBLIC | PROTECTED | PRIVATE | STATIC | ABSTRACT | NATIVE | SYNCHRONIZED | TRANSIENT | VOLATILE | STRICTFP | localModifier );", 48, 0, input);

                throw nvae;
            }

            switch (alt48) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:262:9: PUBLIC
                    {
                    match(input,PUBLIC,FOLLOW_PUBLIC_in_modifier1187); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:263:9: PROTECTED
                    {
                    match(input,PROTECTED,FOLLOW_PROTECTED_in_modifier1197); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:264:9: PRIVATE
                    {
                    match(input,PRIVATE,FOLLOW_PRIVATE_in_modifier1207); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:265:9: STATIC
                    {
                    match(input,STATIC,FOLLOW_STATIC_in_modifier1217); if (failed) return ;

                    }
                    break;
                case 5 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:266:9: ABSTRACT
                    {
                    match(input,ABSTRACT,FOLLOW_ABSTRACT_in_modifier1227); if (failed) return ;

                    }
                    break;
                case 6 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:267:9: NATIVE
                    {
                    match(input,NATIVE,FOLLOW_NATIVE_in_modifier1237); if (failed) return ;

                    }
                    break;
                case 7 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:268:9: SYNCHRONIZED
                    {
                    match(input,SYNCHRONIZED,FOLLOW_SYNCHRONIZED_in_modifier1247); if (failed) return ;

                    }
                    break;
                case 8 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:269:9: TRANSIENT
                    {
                    match(input,TRANSIENT,FOLLOW_TRANSIENT_in_modifier1257); if (failed) return ;

                    }
                    break;
                case 9 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:270:9: VOLATILE
                    {
                    match(input,VOLATILE,FOLLOW_VOLATILE_in_modifier1267); if (failed) return ;

                    }
                    break;
                case 10 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:271:9: STRICTFP
                    {
                    match(input,STRICTFP,FOLLOW_STRICTFP_in_modifier1277); if (failed) return ;

                    }
                    break;
                case 11 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:272:9: localModifier
                    {
                    pushFollow(FOLLOW_localModifier_in_modifier1287);
                    localModifier();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 25, modifier_StartIndex); }
        }
        return ;
    }
    // $ANTLR end modifier


    // $ANTLR start localModifierList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:275:1: localModifierList : ^( LOCAL_MODIFIER_LIST ( localModifier )* ) ;
    public final void localModifierList() throws RecognitionException {
        int localModifierList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 26) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:276:5: ( ^( LOCAL_MODIFIER_LIST ( localModifier )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:276:9: ^( LOCAL_MODIFIER_LIST ( localModifier )* )
            {
            match(input,LOCAL_MODIFIER_LIST,FOLLOW_LOCAL_MODIFIER_LIST_in_localModifierList1307); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:276:31: ( localModifier )*
                loop49:
                do {
                    int alt49=2;
                    int LA49_0 = input.LA(1);

                    if ( (LA49_0==AT||LA49_0==FINAL) ) {
                        alt49=1;
                    }


                    switch (alt49) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: localModifier
                	    {
                	    pushFollow(FOLLOW_localModifier_in_localModifierList1309);
                	    localModifier();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop49;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 26, localModifierList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end localModifierList


    // $ANTLR start localModifier
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:279:1: localModifier : ( FINAL | annotation );
    public final void localModifier() throws RecognitionException {
        int localModifier_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 27) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:280:5: ( FINAL | annotation )
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==FINAL) ) {
                alt50=1;
            }
            else if ( (LA50_0==AT) ) {
                alt50=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("279:1: localModifier : ( FINAL | annotation );", 50, 0, input);

                throw nvae;
            }
            switch (alt50) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:280:9: FINAL
                    {
                    match(input,FINAL,FOLLOW_FINAL_in_localModifier1330); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:281:9: annotation
                    {
                    pushFollow(FOLLOW_annotation_in_localModifier1340);
                    annotation();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 27, localModifier_StartIndex); }
        }
        return ;
    }
    // $ANTLR end localModifier


    // $ANTLR start type
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:284:1: type : ^( TYPE ( primitiveType | qualifiedTypeIdent ) ( arrayDeclaratorList )? ) ;
    public final void type() throws RecognitionException {
        int type_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 28) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:285:5: ( ^( TYPE ( primitiveType | qualifiedTypeIdent ) ( arrayDeclaratorList )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:285:9: ^( TYPE ( primitiveType | qualifiedTypeIdent ) ( arrayDeclaratorList )? )
            {
            match(input,TYPE,FOLLOW_TYPE_in_type1360); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:285:16: ( primitiveType | qualifiedTypeIdent )
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( (LA51_0==BOOLEAN||LA51_0==BYTE||LA51_0==CHAR||LA51_0==DOUBLE||LA51_0==FLOAT||(LA51_0>=INT && LA51_0<=LONG)||LA51_0==SHORT) ) {
                alt51=1;
            }
            else if ( (LA51_0==QUALIFIED_TYPE_IDENT) ) {
                alt51=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("285:16: ( primitiveType | qualifiedTypeIdent )", 51, 0, input);

                throw nvae;
            }
            switch (alt51) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:285:17: primitiveType
                    {
                    pushFollow(FOLLOW_primitiveType_in_type1363);
                    primitiveType();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:285:33: qualifiedTypeIdent
                    {
                    pushFollow(FOLLOW_qualifiedTypeIdent_in_type1367);
                    qualifiedTypeIdent();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }

            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:285:53: ( arrayDeclaratorList )?
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==ARRAY_DECLARATOR_LIST) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: arrayDeclaratorList
                    {
                    pushFollow(FOLLOW_arrayDeclaratorList_in_type1370);
                    arrayDeclaratorList();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 28, type_StartIndex); }
        }
        return ;
    }
    // $ANTLR end type


    // $ANTLR start qualifiedTypeIdent
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:288:1: qualifiedTypeIdent : ^( QUALIFIED_TYPE_IDENT ( typeIdent )+ ) ;
    public final void qualifiedTypeIdent() throws RecognitionException {
        int qualifiedTypeIdent_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 29) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:289:5: ( ^( QUALIFIED_TYPE_IDENT ( typeIdent )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:289:9: ^( QUALIFIED_TYPE_IDENT ( typeIdent )+ )
            {
            match(input,QUALIFIED_TYPE_IDENT,FOLLOW_QUALIFIED_TYPE_IDENT_in_qualifiedTypeIdent1392); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:289:32: ( typeIdent )+
            int cnt53=0;
            loop53:
            do {
                int alt53=2;
                int LA53_0 = input.LA(1);

                if ( (LA53_0==IDENT) ) {
                    alt53=1;
                }


                switch (alt53) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: typeIdent
            	    {
            	    pushFollow(FOLLOW_typeIdent_in_qualifiedTypeIdent1394);
            	    typeIdent();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt53 >= 1 ) break loop53;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(53, input);
                        throw eee;
                }
                cnt53++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 29, qualifiedTypeIdent_StartIndex); }
        }
        return ;
    }
    // $ANTLR end qualifiedTypeIdent


    // $ANTLR start typeIdent
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:292:1: typeIdent : ^( IDENT ( genericTypeArgumentList )? ) ;
    public final void typeIdent() throws RecognitionException {
        int typeIdent_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 30) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:293:5: ( ^( IDENT ( genericTypeArgumentList )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:293:9: ^( IDENT ( genericTypeArgumentList )? )
            {
            match(input,IDENT,FOLLOW_IDENT_in_typeIdent1417); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:293:17: ( genericTypeArgumentList )?
                int alt54=2;
                int LA54_0 = input.LA(1);

                if ( (LA54_0==GENERIC_TYPE_ARG_LIST) ) {
                    alt54=1;
                }
                switch (alt54) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                        {
                        pushFollow(FOLLOW_genericTypeArgumentList_in_typeIdent1419);
                        genericTypeArgumentList();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;

                }


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 30, typeIdent_StartIndex); }
        }
        return ;
    }
    // $ANTLR end typeIdent


    // $ANTLR start primitiveType
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:296:1: primitiveType : ( BOOLEAN | CHAR | BYTE | SHORT | INT | LONG | FLOAT | DOUBLE );
    public final void primitiveType() throws RecognitionException {
        int primitiveType_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 31) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:297:5: ( BOOLEAN | CHAR | BYTE | SHORT | INT | LONG | FLOAT | DOUBLE )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:
            {
            if ( input.LA(1)==BOOLEAN||input.LA(1)==BYTE||input.LA(1)==CHAR||input.LA(1)==DOUBLE||input.LA(1)==FLOAT||(input.LA(1)>=INT && input.LA(1)<=LONG)||input.LA(1)==SHORT ) {
                input.consume();
                errorRecovery=false;failed=false;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_primitiveType0);    throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 31, primitiveType_StartIndex); }
        }
        return ;
    }
    // $ANTLR end primitiveType


    // $ANTLR start genericTypeArgumentList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:307:1: genericTypeArgumentList : ^( GENERIC_TYPE_ARG_LIST ( genericTypeArgument )+ ) ;
    public final void genericTypeArgumentList() throws RecognitionException {
        int genericTypeArgumentList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 32) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:308:5: ( ^( GENERIC_TYPE_ARG_LIST ( genericTypeArgument )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:308:9: ^( GENERIC_TYPE_ARG_LIST ( genericTypeArgument )+ )
            {
            match(input,GENERIC_TYPE_ARG_LIST,FOLLOW_GENERIC_TYPE_ARG_LIST_in_genericTypeArgumentList1530); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:308:33: ( genericTypeArgument )+
            int cnt55=0;
            loop55:
            do {
                int alt55=2;
                int LA55_0 = input.LA(1);

                if ( (LA55_0==QUESTION||LA55_0==TYPE) ) {
                    alt55=1;
                }


                switch (alt55) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgument
            	    {
            	    pushFollow(FOLLOW_genericTypeArgument_in_genericTypeArgumentList1532);
            	    genericTypeArgument();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt55 >= 1 ) break loop55;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(55, input);
                        throw eee;
                }
                cnt55++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 32, genericTypeArgumentList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end genericTypeArgumentList


    // $ANTLR start genericTypeArgument
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:311:1: genericTypeArgument : ( type | ^( QUESTION ( genericWildcardBoundType )? ) );
    public final void genericTypeArgument() throws RecognitionException {
        int genericTypeArgument_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 33) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:312:5: ( type | ^( QUESTION ( genericWildcardBoundType )? ) )
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==TYPE) ) {
                alt57=1;
            }
            else if ( (LA57_0==QUESTION) ) {
                alt57=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("311:1: genericTypeArgument : ( type | ^( QUESTION ( genericWildcardBoundType )? ) );", 57, 0, input);

                throw nvae;
            }
            switch (alt57) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:312:9: type
                    {
                    pushFollow(FOLLOW_type_in_genericTypeArgument1557);
                    type();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:313:9: ^( QUESTION ( genericWildcardBoundType )? )
                    {
                    match(input,QUESTION,FOLLOW_QUESTION_in_genericTypeArgument1568); if (failed) return ;

                    if ( input.LA(1)==Token.DOWN ) {
                        match(input, Token.DOWN, null); if (failed) return ;
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:313:20: ( genericWildcardBoundType )?
                        int alt56=2;
                        int LA56_0 = input.LA(1);

                        if ( (LA56_0==EXTENDS||LA56_0==SUPER) ) {
                            alt56=1;
                        }
                        switch (alt56) {
                            case 1 :
                                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericWildcardBoundType
                                {
                                pushFollow(FOLLOW_genericWildcardBoundType_in_genericTypeArgument1570);
                                genericWildcardBoundType();
                                _fsp--;
                                if (failed) return ;

                                }
                                break;

                        }


                        match(input, Token.UP, null); if (failed) return ;
                    }

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 33, genericTypeArgument_StartIndex); }
        }
        return ;
    }
    // $ANTLR end genericTypeArgument


    // $ANTLR start genericWildcardBoundType
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:316:1: genericWildcardBoundType : ( ^( EXTENDS type ) | ^( SUPER type ) );
    public final void genericWildcardBoundType() throws RecognitionException {
        int genericWildcardBoundType_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 34) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:317:5: ( ^( EXTENDS type ) | ^( SUPER type ) )
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==EXTENDS) ) {
                alt58=1;
            }
            else if ( (LA58_0==SUPER) ) {
                alt58=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("316:1: genericWildcardBoundType : ( ^( EXTENDS type ) | ^( SUPER type ) );", 58, 0, input);

                throw nvae;
            }
            switch (alt58) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:317:9: ^( EXTENDS type )
                    {
                    match(input,EXTENDS,FOLLOW_EXTENDS_in_genericWildcardBoundType1710); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_type_in_genericWildcardBoundType1712);
                    type();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:318:9: ^( SUPER type )
                    {
                    match(input,SUPER,FOLLOW_SUPER_in_genericWildcardBoundType1724); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_type_in_genericWildcardBoundType1726);
                    type();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 34, genericWildcardBoundType_StartIndex); }
        }
        return ;
    }
    // $ANTLR end genericWildcardBoundType


    // $ANTLR start formalParameterList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:321:1: formalParameterList : ^( FORMAL_PARAM_LIST ( formalParameterStandardDecl )* ( formalParameterVarargDecl )? ) ;
    public final void formalParameterList() throws RecognitionException {
        int formalParameterList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 35) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:322:5: ( ^( FORMAL_PARAM_LIST ( formalParameterStandardDecl )* ( formalParameterVarargDecl )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:322:9: ^( FORMAL_PARAM_LIST ( formalParameterStandardDecl )* ( formalParameterVarargDecl )? )
            {
            match(input,FORMAL_PARAM_LIST,FOLLOW_FORMAL_PARAM_LIST_in_formalParameterList1747); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:322:29: ( formalParameterStandardDecl )*
                loop59:
                do {
                    int alt59=2;
                    int LA59_0 = input.LA(1);

                    if ( (LA59_0==FORMAL_PARAM_STD_DECL) ) {
                        alt59=1;
                    }


                    switch (alt59) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: formalParameterStandardDecl
                	    {
                	    pushFollow(FOLLOW_formalParameterStandardDecl_in_formalParameterList1749);
                	    formalParameterStandardDecl();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop59;
                    }
                } while (true);

                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:322:58: ( formalParameterVarargDecl )?
                int alt60=2;
                int LA60_0 = input.LA(1);

                if ( (LA60_0==FORMAL_PARAM_VARARG_DECL) ) {
                    alt60=1;
                }
                switch (alt60) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: formalParameterVarargDecl
                        {
                        pushFollow(FOLLOW_formalParameterVarargDecl_in_formalParameterList1752);
                        formalParameterVarargDecl();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;

                }


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 35, formalParameterList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end formalParameterList


    // $ANTLR start formalParameterStandardDecl
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:325:1: formalParameterStandardDecl : ^( FORMAL_PARAM_STD_DECL localModifierList type variableDeclaratorId ) ;
    public final void formalParameterStandardDecl() throws RecognitionException {
        int formalParameterStandardDecl_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 36) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:326:5: ( ^( FORMAL_PARAM_STD_DECL localModifierList type variableDeclaratorId ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:326:9: ^( FORMAL_PARAM_STD_DECL localModifierList type variableDeclaratorId )
            {
            match(input,FORMAL_PARAM_STD_DECL,FOLLOW_FORMAL_PARAM_STD_DECL_in_formalParameterStandardDecl1779); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_localModifierList_in_formalParameterStandardDecl1781);
            localModifierList();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_type_in_formalParameterStandardDecl1783);
            type();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterStandardDecl1785);
            variableDeclaratorId();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 36, formalParameterStandardDecl_StartIndex); }
        }
        return ;
    }
    // $ANTLR end formalParameterStandardDecl


    // $ANTLR start formalParameterVarargDecl
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:329:1: formalParameterVarargDecl : ^( FORMAL_PARAM_VARARG_DECL localModifierList type variableDeclaratorId ) ;
    public final void formalParameterVarargDecl() throws RecognitionException {
        int formalParameterVarargDecl_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 37) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:330:5: ( ^( FORMAL_PARAM_VARARG_DECL localModifierList type variableDeclaratorId ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:330:9: ^( FORMAL_PARAM_VARARG_DECL localModifierList type variableDeclaratorId )
            {
            match(input,FORMAL_PARAM_VARARG_DECL,FOLLOW_FORMAL_PARAM_VARARG_DECL_in_formalParameterVarargDecl1810); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_localModifierList_in_formalParameterVarargDecl1812);
            localModifierList();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_type_in_formalParameterVarargDecl1814);
            type();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterVarargDecl1816);
            variableDeclaratorId();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 37, formalParameterVarargDecl_StartIndex); }
        }
        return ;
    }
    // $ANTLR end formalParameterVarargDecl

    public static class qualifiedIdentifier_return extends TreeRuleReturnScope {
    };

    // $ANTLR start qualifiedIdentifier
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:333:1: qualifiedIdentifier : ( IDENT | ^( DOT qualifiedIdentifier IDENT ) );
    public final qualifiedIdentifier_return qualifiedIdentifier() throws RecognitionException {
        qualifiedIdentifier_return retval = new qualifiedIdentifier_return();
        retval.start = input.LT(1);
        int qualifiedIdentifier_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 38) ) { return retval; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:334:5: ( IDENT | ^( DOT qualifiedIdentifier IDENT ) )
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==IDENT) ) {
                alt61=1;
            }
            else if ( (LA61_0==DOT) ) {
                alt61=2;
            }
            else {
                if (backtracking>0) {failed=true; return retval;}
                NoViableAltException nvae =
                    new NoViableAltException("333:1: qualifiedIdentifier : ( IDENT | ^( DOT qualifiedIdentifier IDENT ) );", 61, 0, input);

                throw nvae;
            }
            switch (alt61) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:334:9: IDENT
                    {
                    match(input,IDENT,FOLLOW_IDENT_in_qualifiedIdentifier1840); if (failed) return retval;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:335:9: ^( DOT qualifiedIdentifier IDENT )
                    {
                    match(input,DOT,FOLLOW_DOT_in_qualifiedIdentifier1851); if (failed) return retval;

                    match(input, Token.DOWN, null); if (failed) return retval;
                    pushFollow(FOLLOW_qualifiedIdentifier_in_qualifiedIdentifier1853);
                    qualifiedIdentifier();
                    _fsp--;
                    if (failed) return retval;
                    match(input,IDENT,FOLLOW_IDENT_in_qualifiedIdentifier1855); if (failed) return retval;

                    match(input, Token.UP, null); if (failed) return retval;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 38, qualifiedIdentifier_StartIndex); }
        }
        return retval;
    }
    // $ANTLR end qualifiedIdentifier


    // $ANTLR start annotationList
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:340:1: annotationList : ^( ANNOTATION_LIST ( annotation )* ) ;
    public final void annotationList() throws RecognitionException {
        int annotationList_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 39) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:341:5: ( ^( ANNOTATION_LIST ( annotation )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:341:9: ^( ANNOTATION_LIST ( annotation )* )
            {
            match(input,ANNOTATION_LIST,FOLLOW_ANNOTATION_LIST_in_annotationList1882); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:341:27: ( annotation )*
                loop62:
                do {
                    int alt62=2;
                    int LA62_0 = input.LA(1);

                    if ( (LA62_0==AT) ) {
                        alt62=1;
                    }


                    switch (alt62) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: annotation
                	    {
                	    pushFollow(FOLLOW_annotation_in_annotationList1884);
                	    annotation();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop62;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 39, annotationList_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationList


    // $ANTLR start annotation
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:344:1: annotation : ^( AT qualifiedIdentifier ( annotationInit )? ) ;
    public final void annotation() throws RecognitionException {
        int annotation_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 40) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:345:5: ( ^( AT qualifiedIdentifier ( annotationInit )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:345:9: ^( AT qualifiedIdentifier ( annotationInit )? )
            {
            match(input,AT,FOLLOW_AT_in_annotation1906); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_qualifiedIdentifier_in_annotation1908);
            qualifiedIdentifier();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:345:34: ( annotationInit )?
            int alt63=2;
            int LA63_0 = input.LA(1);

            if ( (LA63_0==ANNOTATION_INIT_BLOCK) ) {
                alt63=1;
            }
            switch (alt63) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: annotationInit
                    {
                    pushFollow(FOLLOW_annotationInit_in_annotation1910);
                    annotationInit();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 40, annotation_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotation


    // $ANTLR start annotationInit
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:348:1: annotationInit : ^( ANNOTATION_INIT_BLOCK annotationInitializers ) ;
    public final void annotationInit() throws RecognitionException {
        int annotationInit_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 41) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:349:5: ( ^( ANNOTATION_INIT_BLOCK annotationInitializers ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:349:9: ^( ANNOTATION_INIT_BLOCK annotationInitializers )
            {
            match(input,ANNOTATION_INIT_BLOCK,FOLLOW_ANNOTATION_INIT_BLOCK_in_annotationInit1936); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_annotationInitializers_in_annotationInit1938);
            annotationInitializers();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 41, annotationInit_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationInit


    // $ANTLR start annotationInitializers
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:352:1: annotationInitializers : ( ^( ANNOTATION_INIT_KEY_LIST ( annotationInitializer )+ ) | ^( ANNOTATION_INIT_DEFAULT_KEY annotationElementValue ) );
    public final void annotationInitializers() throws RecognitionException {
        int annotationInitializers_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 42) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:353:5: ( ^( ANNOTATION_INIT_KEY_LIST ( annotationInitializer )+ ) | ^( ANNOTATION_INIT_DEFAULT_KEY annotationElementValue ) )
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==ANNOTATION_INIT_KEY_LIST) ) {
                alt65=1;
            }
            else if ( (LA65_0==ANNOTATION_INIT_DEFAULT_KEY) ) {
                alt65=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("352:1: annotationInitializers : ( ^( ANNOTATION_INIT_KEY_LIST ( annotationInitializer )+ ) | ^( ANNOTATION_INIT_DEFAULT_KEY annotationElementValue ) );", 65, 0, input);

                throw nvae;
            }
            switch (alt65) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:353:9: ^( ANNOTATION_INIT_KEY_LIST ( annotationInitializer )+ )
                    {
                    match(input,ANNOTATION_INIT_KEY_LIST,FOLLOW_ANNOTATION_INIT_KEY_LIST_in_annotationInitializers1959); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:353:36: ( annotationInitializer )+
                    int cnt64=0;
                    loop64:
                    do {
                        int alt64=2;
                        int LA64_0 = input.LA(1);

                        if ( (LA64_0==IDENT) ) {
                            alt64=1;
                        }


                        switch (alt64) {
                    	case 1 :
                    	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: annotationInitializer
                    	    {
                    	    pushFollow(FOLLOW_annotationInitializer_in_annotationInitializers1961);
                    	    annotationInitializer();
                    	    _fsp--;
                    	    if (failed) return ;

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt64 >= 1 ) break loop64;
                    	    if (backtracking>0) {failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(64, input);
                                throw eee;
                        }
                        cnt64++;
                    } while (true);


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:354:9: ^( ANNOTATION_INIT_DEFAULT_KEY annotationElementValue )
                    {
                    match(input,ANNOTATION_INIT_DEFAULT_KEY,FOLLOW_ANNOTATION_INIT_DEFAULT_KEY_in_annotationInitializers1974); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_annotationElementValue_in_annotationInitializers1976);
                    annotationElementValue();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 42, annotationInitializers_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationInitializers


    // $ANTLR start annotationInitializer
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:357:1: annotationInitializer : ^( IDENT annotationElementValue ) ;
    public final void annotationInitializer() throws RecognitionException {
        int annotationInitializer_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 43) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:358:5: ( ^( IDENT annotationElementValue ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:358:9: ^( IDENT annotationElementValue )
            {
            match(input,IDENT,FOLLOW_IDENT_in_annotationInitializer2001); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_annotationElementValue_in_annotationInitializer2003);
            annotationElementValue();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 43, annotationInitializer_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationInitializer


    // $ANTLR start annotationElementValue
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:361:1: annotationElementValue : ( ^( ANNOTATION_INIT_ARRAY_ELEMENT ( annotationElementValue )* ) | annotation | expression );
    public final void annotationElementValue() throws RecognitionException {
        int annotationElementValue_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 44) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:362:5: ( ^( ANNOTATION_INIT_ARRAY_ELEMENT ( annotationElementValue )* ) | annotation | expression )
            int alt67=3;
            switch ( input.LA(1) ) {
            case ANNOTATION_INIT_ARRAY_ELEMENT:
                {
                alt67=1;
                }
                break;
            case AT:
                {
                alt67=2;
                }
                break;
            case EXPR:
                {
                alt67=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("361:1: annotationElementValue : ( ^( ANNOTATION_INIT_ARRAY_ELEMENT ( annotationElementValue )* ) | annotation | expression );", 67, 0, input);

                throw nvae;
            }

            switch (alt67) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:362:9: ^( ANNOTATION_INIT_ARRAY_ELEMENT ( annotationElementValue )* )
                    {
                    match(input,ANNOTATION_INIT_ARRAY_ELEMENT,FOLLOW_ANNOTATION_INIT_ARRAY_ELEMENT_in_annotationElementValue2028); if (failed) return ;

                    if ( input.LA(1)==Token.DOWN ) {
                        match(input, Token.DOWN, null); if (failed) return ;
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:362:41: ( annotationElementValue )*
                        loop66:
                        do {
                            int alt66=2;
                            int LA66_0 = input.LA(1);

                            if ( (LA66_0==AT||LA66_0==ANNOTATION_INIT_ARRAY_ELEMENT||LA66_0==EXPR) ) {
                                alt66=1;
                            }


                            switch (alt66) {
                        	case 1 :
                        	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: annotationElementValue
                        	    {
                        	    pushFollow(FOLLOW_annotationElementValue_in_annotationElementValue2030);
                        	    annotationElementValue();
                        	    _fsp--;
                        	    if (failed) return ;

                        	    }
                        	    break;

                        	default :
                        	    break loop66;
                            }
                        } while (true);


                        match(input, Token.UP, null); if (failed) return ;
                    }

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:363:9: annotation
                    {
                    pushFollow(FOLLOW_annotation_in_annotationElementValue2042);
                    annotation();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:364:9: expression
                    {
                    pushFollow(FOLLOW_expression_in_annotationElementValue2052);
                    expression();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 44, annotationElementValue_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationElementValue


    // $ANTLR start annotationTopLevelScope
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:367:1: annotationTopLevelScope : ^( ANNOTATION_TOP_LEVEL_SCOPE ( annotationScopeDeclarations )* ) ;
    public final void annotationTopLevelScope() throws RecognitionException {
        int annotationTopLevelScope_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 45) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:368:5: ( ^( ANNOTATION_TOP_LEVEL_SCOPE ( annotationScopeDeclarations )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:368:9: ^( ANNOTATION_TOP_LEVEL_SCOPE ( annotationScopeDeclarations )* )
            {
            match(input,ANNOTATION_TOP_LEVEL_SCOPE,FOLLOW_ANNOTATION_TOP_LEVEL_SCOPE_in_annotationTopLevelScope2076); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:368:38: ( annotationScopeDeclarations )*
                loop68:
                do {
                    int alt68=2;
                    int LA68_0 = input.LA(1);

                    if ( (LA68_0==AT||LA68_0==CLASS||LA68_0==ENUM||LA68_0==INTERFACE||LA68_0==ANNOTATION_METHOD_DECL||LA68_0==VAR_DECLARATION) ) {
                        alt68=1;
                    }


                    switch (alt68) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: annotationScopeDeclarations
                	    {
                	    pushFollow(FOLLOW_annotationScopeDeclarations_in_annotationTopLevelScope2078);
                	    annotationScopeDeclarations();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop68;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 45, annotationTopLevelScope_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationTopLevelScope


    // $ANTLR start annotationScopeDeclarations
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:371:1: annotationScopeDeclarations : ( ^( ANNOTATION_METHOD_DECL modifierList type IDENT ( annotationDefaultValue )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | typeDeclaration );
    public final void annotationScopeDeclarations() throws RecognitionException {
        int annotationScopeDeclarations_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 46) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:372:5: ( ^( ANNOTATION_METHOD_DECL modifierList type IDENT ( annotationDefaultValue )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | typeDeclaration )
            int alt70=3;
            switch ( input.LA(1) ) {
            case ANNOTATION_METHOD_DECL:
                {
                alt70=1;
                }
                break;
            case VAR_DECLARATION:
                {
                alt70=2;
                }
                break;
            case AT:
            case CLASS:
            case ENUM:
            case INTERFACE:
                {
                alt70=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("371:1: annotationScopeDeclarations : ( ^( ANNOTATION_METHOD_DECL modifierList type IDENT ( annotationDefaultValue )? ) | ^( VAR_DECLARATION modifierList type variableDeclaratorList ) | typeDeclaration );", 70, 0, input);

                throw nvae;
            }

            switch (alt70) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:372:9: ^( ANNOTATION_METHOD_DECL modifierList type IDENT ( annotationDefaultValue )? )
                    {
                    match(input,ANNOTATION_METHOD_DECL,FOLLOW_ANNOTATION_METHOD_DECL_in_annotationScopeDeclarations2104); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_annotationScopeDeclarations2106);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_type_in_annotationScopeDeclarations2108);
                    type();
                    _fsp--;
                    if (failed) return ;
                    match(input,IDENT,FOLLOW_IDENT_in_annotationScopeDeclarations2110); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:372:58: ( annotationDefaultValue )?
                    int alt69=2;
                    int LA69_0 = input.LA(1);

                    if ( (LA69_0==DEFAULT) ) {
                        alt69=1;
                    }
                    switch (alt69) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: annotationDefaultValue
                            {
                            pushFollow(FOLLOW_annotationDefaultValue_in_annotationScopeDeclarations2112);
                            annotationDefaultValue();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:373:9: ^( VAR_DECLARATION modifierList type variableDeclaratorList )
                    {
                    match(input,VAR_DECLARATION,FOLLOW_VAR_DECLARATION_in_annotationScopeDeclarations2125); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_modifierList_in_annotationScopeDeclarations2127);
                    modifierList();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_type_in_annotationScopeDeclarations2129);
                    type();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_variableDeclaratorList_in_annotationScopeDeclarations2131);
                    variableDeclaratorList();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:374:9: typeDeclaration
                    {
                    pushFollow(FOLLOW_typeDeclaration_in_annotationScopeDeclarations2142);
                    typeDeclaration();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 46, annotationScopeDeclarations_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationScopeDeclarations


    // $ANTLR start annotationDefaultValue
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:377:1: annotationDefaultValue : ^( DEFAULT annotationElementValue ) ;
    public final void annotationDefaultValue() throws RecognitionException {
        int annotationDefaultValue_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 47) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:378:5: ( ^( DEFAULT annotationElementValue ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:378:9: ^( DEFAULT annotationElementValue )
            {
            match(input,DEFAULT,FOLLOW_DEFAULT_in_annotationDefaultValue2166); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_annotationElementValue_in_annotationDefaultValue2168);
            annotationElementValue();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 47, annotationDefaultValue_StartIndex); }
        }
        return ;
    }
    // $ANTLR end annotationDefaultValue


    // $ANTLR start block
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:383:1: block : ^( BLOCK_SCOPE ( blockStatement )* ) ;
    public final void block() throws RecognitionException {
        int block_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 48) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:384:5: ( ^( BLOCK_SCOPE ( blockStatement )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:384:9: ^( BLOCK_SCOPE ( blockStatement )* )
            {
            match(input,BLOCK_SCOPE,FOLLOW_BLOCK_SCOPE_in_block2191); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:384:23: ( blockStatement )*
                loop71:
                do {
                    int alt71=2;
                    int LA71_0 = input.LA(1);

                    if ( (LA71_0==AT||LA71_0==SEMI||LA71_0==ASSERT||LA71_0==BREAK||(LA71_0>=CLASS && LA71_0<=CONTINUE)||LA71_0==DO||LA71_0==ENUM||(LA71_0>=FOR && LA71_0<=IF)||LA71_0==INTERFACE||LA71_0==RETURN||(LA71_0>=SWITCH && LA71_0<=SYNCHRONIZED)||LA71_0==THROW||LA71_0==TRY||LA71_0==WHILE||LA71_0==BLOCK_SCOPE||LA71_0==EXPR||LA71_0==FOR_EACH||LA71_0==LABELED_STATEMENT||LA71_0==VAR_DECLARATION) ) {
                        alt71=1;
                    }


                    switch (alt71) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: blockStatement
                	    {
                	    pushFollow(FOLLOW_blockStatement_in_block2193);
                	    blockStatement();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop71;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 48, block_StartIndex); }
        }
        return ;
    }
    // $ANTLR end block


    // $ANTLR start blockStatement
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:387:1: blockStatement : ( localVariableDeclaration | typeDeclaration | statement );
    public final void blockStatement() throws RecognitionException {
        int blockStatement_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 49) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:388:5: ( localVariableDeclaration | typeDeclaration | statement )
            int alt72=3;
            switch ( input.LA(1) ) {
            case VAR_DECLARATION:
                {
                alt72=1;
                }
                break;
            case AT:
            case CLASS:
            case ENUM:
            case INTERFACE:
                {
                alt72=2;
                }
                break;
            case SEMI:
            case ASSERT:
            case BREAK:
            case CONTINUE:
            case DO:
            case FOR:
            case IF:
            case RETURN:
            case SWITCH:
            case SYNCHRONIZED:
            case THROW:
            case TRY:
            case WHILE:
            case BLOCK_SCOPE:
            case EXPR:
            case FOR_EACH:
            case LABELED_STATEMENT:
                {
                alt72=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("387:1: blockStatement : ( localVariableDeclaration | typeDeclaration | statement );", 72, 0, input);

                throw nvae;
            }

            switch (alt72) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:388:9: localVariableDeclaration
                    {
                    pushFollow(FOLLOW_localVariableDeclaration_in_blockStatement2218);
                    localVariableDeclaration();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:389:9: typeDeclaration
                    {
                    pushFollow(FOLLOW_typeDeclaration_in_blockStatement2228);
                    typeDeclaration();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:390:9: statement
                    {
                    pushFollow(FOLLOW_statement_in_blockStatement2238);
                    statement();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 49, blockStatement_StartIndex); }
        }
        return ;
    }
    // $ANTLR end blockStatement


    // $ANTLR start localVariableDeclaration
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:393:1: localVariableDeclaration : ^( VAR_DECLARATION localModifierList type variableDeclaratorList ) ;
    public final void localVariableDeclaration() throws RecognitionException {
        int localVariableDeclaration_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 50) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:394:5: ( ^( VAR_DECLARATION localModifierList type variableDeclaratorList ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:394:9: ^( VAR_DECLARATION localModifierList type variableDeclaratorList )
            {
            match(input,VAR_DECLARATION,FOLLOW_VAR_DECLARATION_in_localVariableDeclaration2262); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_localModifierList_in_localVariableDeclaration2264);
            localModifierList();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_type_in_localVariableDeclaration2266);
            type();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_variableDeclaratorList_in_localVariableDeclaration2268);
            variableDeclaratorList();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 50, localVariableDeclaration_StartIndex); }
        }
        return ;
    }
    // $ANTLR end localVariableDeclaration


    // $ANTLR start statement
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:398:1: statement : ( block | ^( ASSERT expression ( expression )? ) | ^( IF parenthesizedExpression statement ( statement )? ) | ^( FOR forInit forCondition forUpdater statement ) | ^( FOR_EACH localModifierList type IDENT expression statement ) | ^( WHILE parenthesizedExpression statement ) | ^( DO statement parenthesizedExpression ) | ^( TRY block ( catches )? ( block )? ) | ^( SWITCH parenthesizedExpression switchBlockLabels ) | ^( SYNCHRONIZED parenthesizedExpression block ) | ^( RETURN ( expression )? ) | ^( THROW expression ) | ^( BREAK ( IDENT )? ) | ^( CONTINUE ( IDENT )? ) | ^( LABELED_STATEMENT IDENT statement ) | expression | SEMI );
    public final void statement() throws RecognitionException {
        int statement_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 51) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:399:5: ( block | ^( ASSERT expression ( expression )? ) | ^( IF parenthesizedExpression statement ( statement )? ) | ^( FOR forInit forCondition forUpdater statement ) | ^( FOR_EACH localModifierList type IDENT expression statement ) | ^( WHILE parenthesizedExpression statement ) | ^( DO statement parenthesizedExpression ) | ^( TRY block ( catches )? ( block )? ) | ^( SWITCH parenthesizedExpression switchBlockLabels ) | ^( SYNCHRONIZED parenthesizedExpression block ) | ^( RETURN ( expression )? ) | ^( THROW expression ) | ^( BREAK ( IDENT )? ) | ^( CONTINUE ( IDENT )? ) | ^( LABELED_STATEMENT IDENT statement ) | expression | SEMI )
            int alt80=17;
            switch ( input.LA(1) ) {
            case BLOCK_SCOPE:
                {
                alt80=1;
                }
                break;
            case ASSERT:
                {
                alt80=2;
                }
                break;
            case IF:
                {
                alt80=3;
                }
                break;
            case FOR:
                {
                alt80=4;
                }
                break;
            case FOR_EACH:
                {
                alt80=5;
                }
                break;
            case WHILE:
                {
                alt80=6;
                }
                break;
            case DO:
                {
                alt80=7;
                }
                break;
            case TRY:
                {
                alt80=8;
                }
                break;
            case SWITCH:
                {
                alt80=9;
                }
                break;
            case SYNCHRONIZED:
                {
                alt80=10;
                }
                break;
            case RETURN:
                {
                alt80=11;
                }
                break;
            case THROW:
                {
                alt80=12;
                }
                break;
            case BREAK:
                {
                alt80=13;
                }
                break;
            case CONTINUE:
                {
                alt80=14;
                }
                break;
            case LABELED_STATEMENT:
                {
                alt80=15;
                }
                break;
            case EXPR:
                {
                alt80=16;
                }
                break;
            case SEMI:
                {
                alt80=17;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("398:1: statement : ( block | ^( ASSERT expression ( expression )? ) | ^( IF parenthesizedExpression statement ( statement )? ) | ^( FOR forInit forCondition forUpdater statement ) | ^( FOR_EACH localModifierList type IDENT expression statement ) | ^( WHILE parenthesizedExpression statement ) | ^( DO statement parenthesizedExpression ) | ^( TRY block ( catches )? ( block )? ) | ^( SWITCH parenthesizedExpression switchBlockLabels ) | ^( SYNCHRONIZED parenthesizedExpression block ) | ^( RETURN ( expression )? ) | ^( THROW expression ) | ^( BREAK ( IDENT )? ) | ^( CONTINUE ( IDENT )? ) | ^( LABELED_STATEMENT IDENT statement ) | expression | SEMI );", 80, 0, input);

                throw nvae;
            }

            switch (alt80) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:399:9: block
                    {
                    pushFollow(FOLLOW_block_in_statement2301);
                    block();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:400:9: ^( ASSERT expression ( expression )? )
                    {
                    match(input,ASSERT,FOLLOW_ASSERT_in_statement2312); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expression_in_statement2314);
                    expression();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:400:29: ( expression )?
                    int alt73=2;
                    int LA73_0 = input.LA(1);

                    if ( (LA73_0==EXPR) ) {
                        alt73=1;
                    }
                    switch (alt73) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                            {
                            pushFollow(FOLLOW_expression_in_statement2316);
                            expression();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:401:9: ^( IF parenthesizedExpression statement ( statement )? )
                    {
                    match(input,IF,FOLLOW_IF_in_statement2329); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_parenthesizedExpression_in_statement2331);
                    parenthesizedExpression();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_statement_in_statement2333);
                    statement();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:401:48: ( statement )?
                    int alt74=2;
                    int LA74_0 = input.LA(1);

                    if ( (LA74_0==SEMI||LA74_0==ASSERT||LA74_0==BREAK||LA74_0==CONTINUE||LA74_0==DO||(LA74_0>=FOR && LA74_0<=IF)||LA74_0==RETURN||(LA74_0>=SWITCH && LA74_0<=SYNCHRONIZED)||LA74_0==THROW||LA74_0==TRY||LA74_0==WHILE||LA74_0==BLOCK_SCOPE||LA74_0==EXPR||LA74_0==FOR_EACH||LA74_0==LABELED_STATEMENT) ) {
                        alt74=1;
                    }
                    switch (alt74) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: statement
                            {
                            pushFollow(FOLLOW_statement_in_statement2335);
                            statement();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:402:9: ^( FOR forInit forCondition forUpdater statement )
                    {
                    match(input,FOR,FOLLOW_FOR_in_statement2348); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_forInit_in_statement2350);
                    forInit();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_forCondition_in_statement2352);
                    forCondition();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_forUpdater_in_statement2354);
                    forUpdater();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_statement_in_statement2356);
                    statement();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 5 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:403:9: ^( FOR_EACH localModifierList type IDENT expression statement )
                    {
                    match(input,FOR_EACH,FOLLOW_FOR_EACH_in_statement2368); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_localModifierList_in_statement2370);
                    localModifierList();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_type_in_statement2372);
                    type();
                    _fsp--;
                    if (failed) return ;
                    match(input,IDENT,FOLLOW_IDENT_in_statement2374); if (failed) return ;
                    pushFollow(FOLLOW_expression_in_statement2376);
                    expression();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_statement_in_statement2378);
                    statement();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 6 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:404:9: ^( WHILE parenthesizedExpression statement )
                    {
                    match(input,WHILE,FOLLOW_WHILE_in_statement2391); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_parenthesizedExpression_in_statement2393);
                    parenthesizedExpression();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_statement_in_statement2395);
                    statement();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 7 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:405:9: ^( DO statement parenthesizedExpression )
                    {
                    match(input,DO,FOLLOW_DO_in_statement2407); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_statement_in_statement2409);
                    statement();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_parenthesizedExpression_in_statement2411);
                    parenthesizedExpression();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 8 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:406:9: ^( TRY block ( catches )? ( block )? )
                    {
                    match(input,TRY,FOLLOW_TRY_in_statement2423); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_block_in_statement2425);
                    block();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:406:21: ( catches )?
                    int alt75=2;
                    int LA75_0 = input.LA(1);

                    if ( (LA75_0==CATCH_CLAUSE_LIST) ) {
                        alt75=1;
                    }
                    switch (alt75) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: catches
                            {
                            pushFollow(FOLLOW_catches_in_statement2427);
                            catches();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:406:30: ( block )?
                    int alt76=2;
                    int LA76_0 = input.LA(1);

                    if ( (LA76_0==BLOCK_SCOPE) ) {
                        alt76=1;
                    }
                    switch (alt76) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: block
                            {
                            pushFollow(FOLLOW_block_in_statement2430);
                            block();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 9 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:407:9: ^( SWITCH parenthesizedExpression switchBlockLabels )
                    {
                    match(input,SWITCH,FOLLOW_SWITCH_in_statement2445); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_parenthesizedExpression_in_statement2447);
                    parenthesizedExpression();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_switchBlockLabels_in_statement2449);
                    switchBlockLabels();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 10 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:408:9: ^( SYNCHRONIZED parenthesizedExpression block )
                    {
                    match(input,SYNCHRONIZED,FOLLOW_SYNCHRONIZED_in_statement2461); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_parenthesizedExpression_in_statement2463);
                    parenthesizedExpression();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_block_in_statement2465);
                    block();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 11 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:409:9: ^( RETURN ( expression )? )
                    {
                    match(input,RETURN,FOLLOW_RETURN_in_statement2477); if (failed) return ;

                    if ( input.LA(1)==Token.DOWN ) {
                        match(input, Token.DOWN, null); if (failed) return ;
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:409:18: ( expression )?
                        int alt77=2;
                        int LA77_0 = input.LA(1);

                        if ( (LA77_0==EXPR) ) {
                            alt77=1;
                        }
                        switch (alt77) {
                            case 1 :
                                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                                {
                                pushFollow(FOLLOW_expression_in_statement2479);
                                expression();
                                _fsp--;
                                if (failed) return ;

                                }
                                break;

                        }


                        match(input, Token.UP, null); if (failed) return ;
                    }

                    }
                    break;
                case 12 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:410:9: ^( THROW expression )
                    {
                    match(input,THROW,FOLLOW_THROW_in_statement2492); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expression_in_statement2494);
                    expression();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 13 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:411:9: ^( BREAK ( IDENT )? )
                    {
                    match(input,BREAK,FOLLOW_BREAK_in_statement2506); if (failed) return ;

                    if ( input.LA(1)==Token.DOWN ) {
                        match(input, Token.DOWN, null); if (failed) return ;
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:411:17: ( IDENT )?
                        int alt78=2;
                        int LA78_0 = input.LA(1);

                        if ( (LA78_0==IDENT) ) {
                            alt78=1;
                        }
                        switch (alt78) {
                            case 1 :
                                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: IDENT
                                {
                                match(input,IDENT,FOLLOW_IDENT_in_statement2508); if (failed) return ;

                                }
                                break;

                        }


                        match(input, Token.UP, null); if (failed) return ;
                    }

                    }
                    break;
                case 14 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:412:9: ^( CONTINUE ( IDENT )? )
                    {
                    match(input,CONTINUE,FOLLOW_CONTINUE_in_statement2521); if (failed) return ;

                    if ( input.LA(1)==Token.DOWN ) {
                        match(input, Token.DOWN, null); if (failed) return ;
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:412:20: ( IDENT )?
                        int alt79=2;
                        int LA79_0 = input.LA(1);

                        if ( (LA79_0==IDENT) ) {
                            alt79=1;
                        }
                        switch (alt79) {
                            case 1 :
                                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: IDENT
                                {
                                match(input,IDENT,FOLLOW_IDENT_in_statement2523); if (failed) return ;

                                }
                                break;

                        }


                        match(input, Token.UP, null); if (failed) return ;
                    }

                    }
                    break;
                case 15 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:413:9: ^( LABELED_STATEMENT IDENT statement )
                    {
                    match(input,LABELED_STATEMENT,FOLLOW_LABELED_STATEMENT_in_statement2536); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    match(input,IDENT,FOLLOW_IDENT_in_statement2538); if (failed) return ;
                    pushFollow(FOLLOW_statement_in_statement2540);
                    statement();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 16 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:414:9: expression
                    {
                    pushFollow(FOLLOW_expression_in_statement2551);
                    expression();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 17 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:415:9: SEMI
                    {
                    match(input,SEMI,FOLLOW_SEMI_in_statement2561); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 51, statement_StartIndex); }
        }
        return ;
    }
    // $ANTLR end statement


    // $ANTLR start catches
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:418:1: catches : ^( CATCH_CLAUSE_LIST ( catchClause )+ ) ;
    public final void catches() throws RecognitionException {
        int catches_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 52) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:419:5: ( ^( CATCH_CLAUSE_LIST ( catchClause )+ ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:419:9: ^( CATCH_CLAUSE_LIST ( catchClause )+ )
            {
            match(input,CATCH_CLAUSE_LIST,FOLLOW_CATCH_CLAUSE_LIST_in_catches2590); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:419:29: ( catchClause )+
            int cnt81=0;
            loop81:
            do {
                int alt81=2;
                int LA81_0 = input.LA(1);

                if ( (LA81_0==CATCH) ) {
                    alt81=1;
                }


                switch (alt81) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: catchClause
            	    {
            	    pushFollow(FOLLOW_catchClause_in_catches2592);
            	    catchClause();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    if ( cnt81 >= 1 ) break loop81;
            	    if (backtracking>0) {failed=true; return ;}
                        EarlyExitException eee =
                            new EarlyExitException(81, input);
                        throw eee;
                }
                cnt81++;
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 52, catches_StartIndex); }
        }
        return ;
    }
    // $ANTLR end catches


    // $ANTLR start catchClause
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:422:1: catchClause : ^( CATCH formalParameterStandardDecl block ) ;
    public final void catchClause() throws RecognitionException {
        int catchClause_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 53) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:423:5: ( ^( CATCH formalParameterStandardDecl block ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:423:9: ^( CATCH formalParameterStandardDecl block )
            {
            match(input,CATCH,FOLLOW_CATCH_in_catchClause2618); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_formalParameterStandardDecl_in_catchClause2620);
            formalParameterStandardDecl();
            _fsp--;
            if (failed) return ;
            pushFollow(FOLLOW_block_in_catchClause2622);
            block();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 53, catchClause_StartIndex); }
        }
        return ;
    }
    // $ANTLR end catchClause


    // $ANTLR start switchBlockLabels
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:426:1: switchBlockLabels : ^( SWITCH_BLOCK_LABEL_LIST ( switchCaseLabel )* ( switchDefaultLabel )? ( switchCaseLabel )* ) ;
    public final void switchBlockLabels() throws RecognitionException {
        int switchBlockLabels_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 54) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:5: ( ^( SWITCH_BLOCK_LABEL_LIST ( switchCaseLabel )* ( switchDefaultLabel )? ( switchCaseLabel )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:9: ^( SWITCH_BLOCK_LABEL_LIST ( switchCaseLabel )* ( switchDefaultLabel )? ( switchCaseLabel )* )
            {
            match(input,SWITCH_BLOCK_LABEL_LIST,FOLLOW_SWITCH_BLOCK_LABEL_LIST_in_switchBlockLabels2643); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:35: ( switchCaseLabel )*
                loop82:
                do {
                    int alt82=2;
                    int LA82_0 = input.LA(1);

                    if ( (LA82_0==CASE) ) {
                        int LA82_2 = input.LA(2);

                        if ( (synpred125()) ) {
                            alt82=1;
                        }


                    }


                    switch (alt82) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: switchCaseLabel
                	    {
                	    pushFollow(FOLLOW_switchCaseLabel_in_switchBlockLabels2645);
                	    switchCaseLabel();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop82;
                    }
                } while (true);

                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:52: ( switchDefaultLabel )?
                int alt83=2;
                int LA83_0 = input.LA(1);

                if ( (LA83_0==DEFAULT) ) {
                    alt83=1;
                }
                switch (alt83) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: switchDefaultLabel
                        {
                        pushFollow(FOLLOW_switchDefaultLabel_in_switchBlockLabels2648);
                        switchDefaultLabel();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;

                }

                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:72: ( switchCaseLabel )*
                loop84:
                do {
                    int alt84=2;
                    int LA84_0 = input.LA(1);

                    if ( (LA84_0==CASE) ) {
                        alt84=1;
                    }


                    switch (alt84) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: switchCaseLabel
                	    {
                	    pushFollow(FOLLOW_switchCaseLabel_in_switchBlockLabels2651);
                	    switchCaseLabel();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop84;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 54, switchBlockLabels_StartIndex); }
        }
        return ;
    }
    // $ANTLR end switchBlockLabels


    // $ANTLR start switchCaseLabel
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:430:1: switchCaseLabel : ^( CASE expression ( blockStatement )* ) ;
    public final void switchCaseLabel() throws RecognitionException {
        int switchCaseLabel_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 55) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:431:5: ( ^( CASE expression ( blockStatement )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:431:9: ^( CASE expression ( blockStatement )* )
            {
            match(input,CASE,FOLLOW_CASE_in_switchCaseLabel2681); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_expression_in_switchCaseLabel2683);
            expression();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:431:27: ( blockStatement )*
            loop85:
            do {
                int alt85=2;
                int LA85_0 = input.LA(1);

                if ( (LA85_0==AT||LA85_0==SEMI||LA85_0==ASSERT||LA85_0==BREAK||(LA85_0>=CLASS && LA85_0<=CONTINUE)||LA85_0==DO||LA85_0==ENUM||(LA85_0>=FOR && LA85_0<=IF)||LA85_0==INTERFACE||LA85_0==RETURN||(LA85_0>=SWITCH && LA85_0<=SYNCHRONIZED)||LA85_0==THROW||LA85_0==TRY||LA85_0==WHILE||LA85_0==BLOCK_SCOPE||LA85_0==EXPR||LA85_0==FOR_EACH||LA85_0==LABELED_STATEMENT||LA85_0==VAR_DECLARATION) ) {
                    alt85=1;
                }


                switch (alt85) {
            	case 1 :
            	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: blockStatement
            	    {
            	    pushFollow(FOLLOW_blockStatement_in_switchCaseLabel2685);
            	    blockStatement();
            	    _fsp--;
            	    if (failed) return ;

            	    }
            	    break;

            	default :
            	    break loop85;
                }
            } while (true);


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 55, switchCaseLabel_StartIndex); }
        }
        return ;
    }
    // $ANTLR end switchCaseLabel


    // $ANTLR start switchDefaultLabel
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:434:1: switchDefaultLabel : ^( DEFAULT ( blockStatement )* ) ;
    public final void switchDefaultLabel() throws RecognitionException {
        int switchDefaultLabel_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 56) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:435:5: ( ^( DEFAULT ( blockStatement )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:435:9: ^( DEFAULT ( blockStatement )* )
            {
            match(input,DEFAULT,FOLLOW_DEFAULT_in_switchDefaultLabel2711); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:435:19: ( blockStatement )*
                loop86:
                do {
                    int alt86=2;
                    int LA86_0 = input.LA(1);

                    if ( (LA86_0==AT||LA86_0==SEMI||LA86_0==ASSERT||LA86_0==BREAK||(LA86_0>=CLASS && LA86_0<=CONTINUE)||LA86_0==DO||LA86_0==ENUM||(LA86_0>=FOR && LA86_0<=IF)||LA86_0==INTERFACE||LA86_0==RETURN||(LA86_0>=SWITCH && LA86_0<=SYNCHRONIZED)||LA86_0==THROW||LA86_0==TRY||LA86_0==WHILE||LA86_0==BLOCK_SCOPE||LA86_0==EXPR||LA86_0==FOR_EACH||LA86_0==LABELED_STATEMENT||LA86_0==VAR_DECLARATION) ) {
                        alt86=1;
                    }


                    switch (alt86) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: blockStatement
                	    {
                	    pushFollow(FOLLOW_blockStatement_in_switchDefaultLabel2713);
                	    blockStatement();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop86;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 56, switchDefaultLabel_StartIndex); }
        }
        return ;
    }
    // $ANTLR end switchDefaultLabel


    // $ANTLR start forInit
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:438:1: forInit : ^( FOR_INIT ( localVariableDeclaration | ( expression )* )? ) ;
    public final void forInit() throws RecognitionException {
        int forInit_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 57) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:5: ( ^( FOR_INIT ( localVariableDeclaration | ( expression )* )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:9: ^( FOR_INIT ( localVariableDeclaration | ( expression )* )? )
            {
            match(input,FOR_INIT,FOLLOW_FOR_INIT_in_forInit2739); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:20: ( localVariableDeclaration | ( expression )* )?
                int alt88=3;
                switch ( input.LA(1) ) {
                    case VAR_DECLARATION:
                        {
                        alt88=1;
                        }
                        break;
                    case EXPR:
                        {
                        alt88=2;
                        }
                        break;
                    case UP:
                        {
                        int LA88_3 = input.LA(2);

                        if ( (synpred132()) ) {
                            alt88=2;
                        }
                        }
                        break;
                }

                switch (alt88) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:21: localVariableDeclaration
                        {
                        pushFollow(FOLLOW_localVariableDeclaration_in_forInit2742);
                        localVariableDeclaration();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;
                    case 2 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:48: ( expression )*
                        {
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:48: ( expression )*
                        loop87:
                        do {
                            int alt87=2;
                            int LA87_0 = input.LA(1);

                            if ( (LA87_0==EXPR) ) {
                                alt87=1;
                            }


                            switch (alt87) {
                        	case 1 :
                        	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                        	    {
                        	    pushFollow(FOLLOW_expression_in_forInit2746);
                        	    expression();
                        	    _fsp--;
                        	    if (failed) return ;

                        	    }
                        	    break;

                        	default :
                        	    break loop87;
                            }
                        } while (true);


                        }
                        break;

                }


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 57, forInit_StartIndex); }
        }
        return ;
    }
    // $ANTLR end forInit


    // $ANTLR start forCondition
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:442:1: forCondition : ^( FOR_CONDITION ( expression )? ) ;
    public final void forCondition() throws RecognitionException {
        int forCondition_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 58) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:443:5: ( ^( FOR_CONDITION ( expression )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:443:9: ^( FOR_CONDITION ( expression )? )
            {
            match(input,FOR_CONDITION,FOLLOW_FOR_CONDITION_in_forCondition2774); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:443:25: ( expression )?
                int alt89=2;
                int LA89_0 = input.LA(1);

                if ( (LA89_0==EXPR) ) {
                    alt89=1;
                }
                switch (alt89) {
                    case 1 :
                        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                        {
                        pushFollow(FOLLOW_expression_in_forCondition2776);
                        expression();
                        _fsp--;
                        if (failed) return ;

                        }
                        break;

                }


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 58, forCondition_StartIndex); }
        }
        return ;
    }
    // $ANTLR end forCondition


    // $ANTLR start forUpdater
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:446:1: forUpdater : ^( FOR_UPDATE ( expression )* ) ;
    public final void forUpdater() throws RecognitionException {
        int forUpdater_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 59) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:447:5: ( ^( FOR_UPDATE ( expression )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:447:9: ^( FOR_UPDATE ( expression )* )
            {
            match(input,FOR_UPDATE,FOLLOW_FOR_UPDATE_in_forUpdater2802); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:447:22: ( expression )*
                loop90:
                do {
                    int alt90=2;
                    int LA90_0 = input.LA(1);

                    if ( (LA90_0==EXPR) ) {
                        alt90=1;
                    }


                    switch (alt90) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                	    {
                	    pushFollow(FOLLOW_expression_in_forUpdater2804);
                	    expression();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop90;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 59, forUpdater_StartIndex); }
        }
        return ;
    }
    // $ANTLR end forUpdater


    // $ANTLR start parenthesizedExpression
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:452:1: parenthesizedExpression : ^( PARENTESIZED_EXPR expression ) ;
    public final void parenthesizedExpression() throws RecognitionException {
        int parenthesizedExpression_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 60) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:453:5: ( ^( PARENTESIZED_EXPR expression ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:453:9: ^( PARENTESIZED_EXPR expression )
            {
            match(input,PARENTESIZED_EXPR,FOLLOW_PARENTESIZED_EXPR_in_parenthesizedExpression2832); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_expression_in_parenthesizedExpression2834);
            expression();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 60, parenthesizedExpression_StartIndex); }
        }
        return ;
    }
    // $ANTLR end parenthesizedExpression


    // $ANTLR start expression
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:456:1: expression : ^( EXPR expr ) ;
    public final void expression() throws RecognitionException {
        int expression_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 61) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:457:5: ( ^( EXPR expr ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:457:9: ^( EXPR expr )
            {
            match(input,EXPR,FOLLOW_EXPR_in_expression2859); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            pushFollow(FOLLOW_expr_in_expression2861);
            expr();
            _fsp--;
            if (failed) return ;

            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 61, expression_StartIndex); }
        }
        return ;
    }
    // $ANTLR end expression


    // $ANTLR start expr
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:460:1: expr : ( ^( ASSIGN expr expr ) | ^( PLUS_ASSIGN expr expr ) | ^( MINUS_ASSIGN expr expr ) | ^( STAR_ASSIGN expr expr ) | ^( DIV_ASSIGN expr expr ) | ^( AND_ASSIGN expr expr ) | ^( OR_ASSIGN expr expr ) | ^( XOR_ASSIGN expr expr ) | ^( MOD_ASSIGN expr expr ) | ^( BIT_SHIFT_RIGHT_ASSIGN expr expr ) | ^( SHIFT_RIGHT_ASSIGN expr expr ) | ^( SHIFT_LEFT_ASSIGN expr expr ) | ^( QUESTION expr expr expr ) | ^( LOGICAL_OR expr expr ) | ^( LOGICAL_AND expr expr ) | ^( OR expr expr ) | ^( XOR expr expr ) | ^( AND expr expr ) | ^( EQUAL expr expr ) | ^( NOT_EQUAL expr expr ) | ^( INSTANCEOF expr type ) | ^( LESS_OR_EQUAL expr expr ) | ^( GREATER_OR_EQUAL expr expr ) | ^( BIT_SHIFT_RIGHT expr expr ) | ^( SHIFT_RIGHT expr expr ) | ^( GREATER_THAN expr expr ) | ^( SHIFT_LEFT expr expr ) | ^( LESS_THAN expr expr ) | ^( PLUS expr expr ) | ^( MINUS expr expr ) | ^( STAR expr expr ) | ^( DIV expr expr ) | ^( MOD expr expr ) | ^( UNARY_PLUS expr ) | ^( UNARY_MINUS expr ) | ^( PRE_INC expr ) | ^( PRE_DEC expr ) | ^( POST_INC expr ) | ^( POST_DEC expr ) | ^( NOT expr ) | ^( LOGICAL_NOT expr ) | ^( CAST_EXPR type expr ) | primaryExpression );
    public final void expr() throws RecognitionException {
        int expr_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 62) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:461:5: ( ^( ASSIGN expr expr ) | ^( PLUS_ASSIGN expr expr ) | ^( MINUS_ASSIGN expr expr ) | ^( STAR_ASSIGN expr expr ) | ^( DIV_ASSIGN expr expr ) | ^( AND_ASSIGN expr expr ) | ^( OR_ASSIGN expr expr ) | ^( XOR_ASSIGN expr expr ) | ^( MOD_ASSIGN expr expr ) | ^( BIT_SHIFT_RIGHT_ASSIGN expr expr ) | ^( SHIFT_RIGHT_ASSIGN expr expr ) | ^( SHIFT_LEFT_ASSIGN expr expr ) | ^( QUESTION expr expr expr ) | ^( LOGICAL_OR expr expr ) | ^( LOGICAL_AND expr expr ) | ^( OR expr expr ) | ^( XOR expr expr ) | ^( AND expr expr ) | ^( EQUAL expr expr ) | ^( NOT_EQUAL expr expr ) | ^( INSTANCEOF expr type ) | ^( LESS_OR_EQUAL expr expr ) | ^( GREATER_OR_EQUAL expr expr ) | ^( BIT_SHIFT_RIGHT expr expr ) | ^( SHIFT_RIGHT expr expr ) | ^( GREATER_THAN expr expr ) | ^( SHIFT_LEFT expr expr ) | ^( LESS_THAN expr expr ) | ^( PLUS expr expr ) | ^( MINUS expr expr ) | ^( STAR expr expr ) | ^( DIV expr expr ) | ^( MOD expr expr ) | ^( UNARY_PLUS expr ) | ^( UNARY_MINUS expr ) | ^( PRE_INC expr ) | ^( PRE_DEC expr ) | ^( POST_INC expr ) | ^( POST_DEC expr ) | ^( NOT expr ) | ^( LOGICAL_NOT expr ) | ^( CAST_EXPR type expr ) | primaryExpression )
            int alt91=43;
            switch ( input.LA(1) ) {
            case ASSIGN:
                {
                alt91=1;
                }
                break;
            case PLUS_ASSIGN:
                {
                alt91=2;
                }
                break;
            case MINUS_ASSIGN:
                {
                alt91=3;
                }
                break;
            case STAR_ASSIGN:
                {
                alt91=4;
                }
                break;
            case DIV_ASSIGN:
                {
                alt91=5;
                }
                break;
            case AND_ASSIGN:
                {
                alt91=6;
                }
                break;
            case OR_ASSIGN:
                {
                alt91=7;
                }
                break;
            case XOR_ASSIGN:
                {
                alt91=8;
                }
                break;
            case MOD_ASSIGN:
                {
                alt91=9;
                }
                break;
            case BIT_SHIFT_RIGHT_ASSIGN:
                {
                alt91=10;
                }
                break;
            case SHIFT_RIGHT_ASSIGN:
                {
                alt91=11;
                }
                break;
            case SHIFT_LEFT_ASSIGN:
                {
                alt91=12;
                }
                break;
            case QUESTION:
                {
                alt91=13;
                }
                break;
            case LOGICAL_OR:
                {
                alt91=14;
                }
                break;
            case LOGICAL_AND:
                {
                alt91=15;
                }
                break;
            case OR:
                {
                alt91=16;
                }
                break;
            case XOR:
                {
                alt91=17;
                }
                break;
            case AND:
                {
                alt91=18;
                }
                break;
            case EQUAL:
                {
                alt91=19;
                }
                break;
            case NOT_EQUAL:
                {
                alt91=20;
                }
                break;
            case INSTANCEOF:
                {
                alt91=21;
                }
                break;
            case LESS_OR_EQUAL:
                {
                alt91=22;
                }
                break;
            case GREATER_OR_EQUAL:
                {
                alt91=23;
                }
                break;
            case BIT_SHIFT_RIGHT:
                {
                alt91=24;
                }
                break;
            case SHIFT_RIGHT:
                {
                alt91=25;
                }
                break;
            case GREATER_THAN:
                {
                alt91=26;
                }
                break;
            case SHIFT_LEFT:
                {
                alt91=27;
                }
                break;
            case LESS_THAN:
                {
                alt91=28;
                }
                break;
            case PLUS:
                {
                alt91=29;
                }
                break;
            case MINUS:
                {
                alt91=30;
                }
                break;
            case STAR:
                {
                alt91=31;
                }
                break;
            case DIV:
                {
                alt91=32;
                }
                break;
            case MOD:
                {
                alt91=33;
                }
                break;
            case UNARY_PLUS:
                {
                alt91=34;
                }
                break;
            case UNARY_MINUS:
                {
                alt91=35;
                }
                break;
            case PRE_INC:
                {
                alt91=36;
                }
                break;
            case PRE_DEC:
                {
                alt91=37;
                }
                break;
            case POST_INC:
                {
                alt91=38;
                }
                break;
            case POST_DEC:
                {
                alt91=39;
                }
                break;
            case NOT:
                {
                alt91=40;
                }
                break;
            case LOGICAL_NOT:
                {
                alt91=41;
                }
                break;
            case CAST_EXPR:
                {
                alt91=42;
                }
                break;
            case DOT:
            case FALSE:
            case NULL:
            case SUPER:
            case THIS:
            case TRUE:
            case ARRAY_DECLARATOR:
            case ARRAY_ELEMENT_ACCESS:
            case CLASS_CONSTRUCTOR_CALL:
            case METHOD_CALL:
            case PARENTESIZED_EXPR:
            case STATIC_ARRAY_CREATOR:
            case SUPER_CONSTRUCTOR_CALL:
            case THIS_CONSTRUCTOR_CALL:
            case IDENT:
            case HEX_LITERAL:
            case OCTAL_LITERAL:
            case DECIMAL_LITERAL:
            case FLOATING_POINT_LITERAL:
            case CHARACTER_LITERAL:
            case STRING_LITERAL:
                {
                alt91=43;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("460:1: expr : ( ^( ASSIGN expr expr ) | ^( PLUS_ASSIGN expr expr ) | ^( MINUS_ASSIGN expr expr ) | ^( STAR_ASSIGN expr expr ) | ^( DIV_ASSIGN expr expr ) | ^( AND_ASSIGN expr expr ) | ^( OR_ASSIGN expr expr ) | ^( XOR_ASSIGN expr expr ) | ^( MOD_ASSIGN expr expr ) | ^( BIT_SHIFT_RIGHT_ASSIGN expr expr ) | ^( SHIFT_RIGHT_ASSIGN expr expr ) | ^( SHIFT_LEFT_ASSIGN expr expr ) | ^( QUESTION expr expr expr ) | ^( LOGICAL_OR expr expr ) | ^( LOGICAL_AND expr expr ) | ^( OR expr expr ) | ^( XOR expr expr ) | ^( AND expr expr ) | ^( EQUAL expr expr ) | ^( NOT_EQUAL expr expr ) | ^( INSTANCEOF expr type ) | ^( LESS_OR_EQUAL expr expr ) | ^( GREATER_OR_EQUAL expr expr ) | ^( BIT_SHIFT_RIGHT expr expr ) | ^( SHIFT_RIGHT expr expr ) | ^( GREATER_THAN expr expr ) | ^( SHIFT_LEFT expr expr ) | ^( LESS_THAN expr expr ) | ^( PLUS expr expr ) | ^( MINUS expr expr ) | ^( STAR expr expr ) | ^( DIV expr expr ) | ^( MOD expr expr ) | ^( UNARY_PLUS expr ) | ^( UNARY_MINUS expr ) | ^( PRE_INC expr ) | ^( PRE_DEC expr ) | ^( POST_INC expr ) | ^( POST_DEC expr ) | ^( NOT expr ) | ^( LOGICAL_NOT expr ) | ^( CAST_EXPR type expr ) | primaryExpression );", 91, 0, input);

                throw nvae;
            }

            switch (alt91) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:461:9: ^( ASSIGN expr expr )
                    {
                    match(input,ASSIGN,FOLLOW_ASSIGN_in_expr2882); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2884);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2886);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:462:9: ^( PLUS_ASSIGN expr expr )
                    {
                    match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_expr2898); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2900);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2902);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:463:9: ^( MINUS_ASSIGN expr expr )
                    {
                    match(input,MINUS_ASSIGN,FOLLOW_MINUS_ASSIGN_in_expr2914); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2916);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2918);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:464:9: ^( STAR_ASSIGN expr expr )
                    {
                    match(input,STAR_ASSIGN,FOLLOW_STAR_ASSIGN_in_expr2930); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2932);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2934);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 5 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:465:9: ^( DIV_ASSIGN expr expr )
                    {
                    match(input,DIV_ASSIGN,FOLLOW_DIV_ASSIGN_in_expr2946); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2948);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2950);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 6 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:466:9: ^( AND_ASSIGN expr expr )
                    {
                    match(input,AND_ASSIGN,FOLLOW_AND_ASSIGN_in_expr2962); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2964);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2966);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 7 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:467:9: ^( OR_ASSIGN expr expr )
                    {
                    match(input,OR_ASSIGN,FOLLOW_OR_ASSIGN_in_expr2978); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2980);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2982);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 8 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:468:9: ^( XOR_ASSIGN expr expr )
                    {
                    match(input,XOR_ASSIGN,FOLLOW_XOR_ASSIGN_in_expr2994); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2996);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr2998);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 9 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:469:9: ^( MOD_ASSIGN expr expr )
                    {
                    match(input,MOD_ASSIGN,FOLLOW_MOD_ASSIGN_in_expr3010); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3012);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3014);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 10 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:470:9: ^( BIT_SHIFT_RIGHT_ASSIGN expr expr )
                    {
                    match(input,BIT_SHIFT_RIGHT_ASSIGN,FOLLOW_BIT_SHIFT_RIGHT_ASSIGN_in_expr3026); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3028);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3030);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 11 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:471:9: ^( SHIFT_RIGHT_ASSIGN expr expr )
                    {
                    match(input,SHIFT_RIGHT_ASSIGN,FOLLOW_SHIFT_RIGHT_ASSIGN_in_expr3042); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3044);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3046);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 12 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:472:9: ^( SHIFT_LEFT_ASSIGN expr expr )
                    {
                    match(input,SHIFT_LEFT_ASSIGN,FOLLOW_SHIFT_LEFT_ASSIGN_in_expr3058); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3060);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3062);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 13 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:473:9: ^( QUESTION expr expr expr )
                    {
                    match(input,QUESTION,FOLLOW_QUESTION_in_expr3074); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3076);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3078);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3080);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 14 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:474:9: ^( LOGICAL_OR expr expr )
                    {
                    match(input,LOGICAL_OR,FOLLOW_LOGICAL_OR_in_expr3092); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3094);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3096);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 15 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:475:9: ^( LOGICAL_AND expr expr )
                    {
                    match(input,LOGICAL_AND,FOLLOW_LOGICAL_AND_in_expr3108); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3110);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3112);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 16 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:476:9: ^( OR expr expr )
                    {
                    match(input,OR,FOLLOW_OR_in_expr3124); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3126);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3128);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 17 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:477:9: ^( XOR expr expr )
                    {
                    match(input,XOR,FOLLOW_XOR_in_expr3140); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3142);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3144);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 18 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:478:9: ^( AND expr expr )
                    {
                    match(input,AND,FOLLOW_AND_in_expr3156); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3158);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3160);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 19 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:479:9: ^( EQUAL expr expr )
                    {
                    match(input,EQUAL,FOLLOW_EQUAL_in_expr3172); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3174);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3176);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 20 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:480:9: ^( NOT_EQUAL expr expr )
                    {
                    match(input,NOT_EQUAL,FOLLOW_NOT_EQUAL_in_expr3188); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3190);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3192);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 21 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:481:9: ^( INSTANCEOF expr type )
                    {
                    match(input,INSTANCEOF,FOLLOW_INSTANCEOF_in_expr3204); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3206);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_type_in_expr3208);
                    type();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 22 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:482:9: ^( LESS_OR_EQUAL expr expr )
                    {
                    match(input,LESS_OR_EQUAL,FOLLOW_LESS_OR_EQUAL_in_expr3220); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3222);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3224);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 23 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:483:9: ^( GREATER_OR_EQUAL expr expr )
                    {
                    match(input,GREATER_OR_EQUAL,FOLLOW_GREATER_OR_EQUAL_in_expr3236); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3238);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3240);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 24 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:484:9: ^( BIT_SHIFT_RIGHT expr expr )
                    {
                    match(input,BIT_SHIFT_RIGHT,FOLLOW_BIT_SHIFT_RIGHT_in_expr3252); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3254);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3256);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 25 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:485:9: ^( SHIFT_RIGHT expr expr )
                    {
                    match(input,SHIFT_RIGHT,FOLLOW_SHIFT_RIGHT_in_expr3268); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3270);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3272);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 26 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:486:9: ^( GREATER_THAN expr expr )
                    {
                    match(input,GREATER_THAN,FOLLOW_GREATER_THAN_in_expr3284); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3286);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3288);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 27 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:487:9: ^( SHIFT_LEFT expr expr )
                    {
                    match(input,SHIFT_LEFT,FOLLOW_SHIFT_LEFT_in_expr3300); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3302);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3304);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 28 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:488:9: ^( LESS_THAN expr expr )
                    {
                    match(input,LESS_THAN,FOLLOW_LESS_THAN_in_expr3316); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3318);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3320);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 29 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:489:9: ^( PLUS expr expr )
                    {
                    match(input,PLUS,FOLLOW_PLUS_in_expr3332); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3334);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3336);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 30 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:490:9: ^( MINUS expr expr )
                    {
                    match(input,MINUS,FOLLOW_MINUS_in_expr3348); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3350);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3352);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 31 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:491:9: ^( STAR expr expr )
                    {
                    match(input,STAR,FOLLOW_STAR_in_expr3364); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3366);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3368);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 32 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:492:9: ^( DIV expr expr )
                    {
                    match(input,DIV,FOLLOW_DIV_in_expr3380); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3382);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3384);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 33 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:493:9: ^( MOD expr expr )
                    {
                    match(input,MOD,FOLLOW_MOD_in_expr3396); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3398);
                    expr();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3400);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 34 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:494:9: ^( UNARY_PLUS expr )
                    {
                    match(input,UNARY_PLUS,FOLLOW_UNARY_PLUS_in_expr3412); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3414);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 35 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:495:9: ^( UNARY_MINUS expr )
                    {
                    match(input,UNARY_MINUS,FOLLOW_UNARY_MINUS_in_expr3426); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3428);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 36 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:496:9: ^( PRE_INC expr )
                    {
                    match(input,PRE_INC,FOLLOW_PRE_INC_in_expr3440); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3442);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 37 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:497:9: ^( PRE_DEC expr )
                    {
                    match(input,PRE_DEC,FOLLOW_PRE_DEC_in_expr3454); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3456);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 38 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:498:9: ^( POST_INC expr )
                    {
                    match(input,POST_INC,FOLLOW_POST_INC_in_expr3468); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3470);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 39 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:499:9: ^( POST_DEC expr )
                    {
                    match(input,POST_DEC,FOLLOW_POST_DEC_in_expr3482); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3484);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 40 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:500:9: ^( NOT expr )
                    {
                    match(input,NOT,FOLLOW_NOT_in_expr3496); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3498);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 41 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:501:9: ^( LOGICAL_NOT expr )
                    {
                    match(input,LOGICAL_NOT,FOLLOW_LOGICAL_NOT_in_expr3510); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3512);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 42 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:502:9: ^( CAST_EXPR type expr )
                    {
                    match(input,CAST_EXPR,FOLLOW_CAST_EXPR_in_expr3524); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_type_in_expr3526);
                    type();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expr_in_expr3528);
                    expr();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 43 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:503:9: primaryExpression
                    {
                    pushFollow(FOLLOW_primaryExpression_in_expr3539);
                    primaryExpression();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 62, expr_StartIndex); }
        }
        return ;
    }
    // $ANTLR end expr


    // $ANTLR start primaryExpression
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:506:1: primaryExpression : ( ^( DOT ( primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS ) | primitiveType CLASS | VOID CLASS ) ) | parenthesizedExpression | IDENT | ^( METHOD_CALL primaryExpression ( genericTypeArgumentList )? arguments ) | explicitConstructorCall | ^( ARRAY_ELEMENT_ACCESS primaryExpression expression ) | literal | newExpression | THIS | arrayTypeDeclarator | SUPER );
    public final void primaryExpression() throws RecognitionException {
        int primaryExpression_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 63) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:507:5: ( ^( DOT ( primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS ) | primitiveType CLASS | VOID CLASS ) ) | parenthesizedExpression | IDENT | ^( METHOD_CALL primaryExpression ( genericTypeArgumentList )? arguments ) | explicitConstructorCall | ^( ARRAY_ELEMENT_ACCESS primaryExpression expression ) | literal | newExpression | THIS | arrayTypeDeclarator | SUPER )
            int alt95=11;
            switch ( input.LA(1) ) {
            case DOT:
                {
                alt95=1;
                }
                break;
            case PARENTESIZED_EXPR:
                {
                alt95=2;
                }
                break;
            case IDENT:
                {
                alt95=3;
                }
                break;
            case METHOD_CALL:
                {
                alt95=4;
                }
                break;
            case SUPER_CONSTRUCTOR_CALL:
            case THIS_CONSTRUCTOR_CALL:
                {
                alt95=5;
                }
                break;
            case ARRAY_ELEMENT_ACCESS:
                {
                alt95=6;
                }
                break;
            case FALSE:
            case NULL:
            case TRUE:
            case HEX_LITERAL:
            case OCTAL_LITERAL:
            case DECIMAL_LITERAL:
            case FLOATING_POINT_LITERAL:
            case CHARACTER_LITERAL:
            case STRING_LITERAL:
                {
                alt95=7;
                }
                break;
            case CLASS_CONSTRUCTOR_CALL:
            case STATIC_ARRAY_CREATOR:
                {
                alt95=8;
                }
                break;
            case THIS:
                {
                alt95=9;
                }
                break;
            case ARRAY_DECLARATOR:
                {
                alt95=10;
                }
                break;
            case SUPER:
                {
                alt95=11;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("506:1: primaryExpression : ( ^( DOT ( primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS ) | primitiveType CLASS | VOID CLASS ) ) | parenthesizedExpression | IDENT | ^( METHOD_CALL primaryExpression ( genericTypeArgumentList )? arguments ) | explicitConstructorCall | ^( ARRAY_ELEMENT_ACCESS primaryExpression expression ) | literal | newExpression | THIS | arrayTypeDeclarator | SUPER );", 95, 0, input);

                throw nvae;
            }

            switch (alt95) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:507:9: ^( DOT ( primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS ) | primitiveType CLASS | VOID CLASS ) )
                    {
                    match(input,DOT,FOLLOW_DOT_in_primaryExpression3565); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:508:13: ( primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS ) | primitiveType CLASS | VOID CLASS )
                    int alt93=3;
                    switch ( input.LA(1) ) {
                    case DOT:
                    case FALSE:
                    case NULL:
                    case SUPER:
                    case THIS:
                    case TRUE:
                    case ARRAY_DECLARATOR:
                    case ARRAY_ELEMENT_ACCESS:
                    case CLASS_CONSTRUCTOR_CALL:
                    case METHOD_CALL:
                    case PARENTESIZED_EXPR:
                    case STATIC_ARRAY_CREATOR:
                    case SUPER_CONSTRUCTOR_CALL:
                    case THIS_CONSTRUCTOR_CALL:
                    case IDENT:
                    case HEX_LITERAL:
                    case OCTAL_LITERAL:
                    case DECIMAL_LITERAL:
                    case FLOATING_POINT_LITERAL:
                    case CHARACTER_LITERAL:
                    case STRING_LITERAL:
                        {
                        alt93=1;
                        }
                        break;
                    case BOOLEAN:
                    case BYTE:
                    case CHAR:
                    case DOUBLE:
                    case FLOAT:
                    case INT:
                    case LONG:
                    case SHORT:
                        {
                        alt93=2;
                        }
                        break;
                    case VOID:
                        {
                        alt93=3;
                        }
                        break;
                    default:
                        if (backtracking>0) {failed=true; return ;}
                        NoViableAltException nvae =
                            new NoViableAltException("508:13: ( primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS ) | primitiveType CLASS | VOID CLASS )", 93, 0, input);

                        throw nvae;
                    }

                    switch (alt93) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:508:17: primaryExpression ( IDENT | THIS | SUPER | innerNewExpression | CLASS )
                            {
                            pushFollow(FOLLOW_primaryExpression_in_primaryExpression3583);
                            primaryExpression();
                            _fsp--;
                            if (failed) return ;
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:509:17: ( IDENT | THIS | SUPER | innerNewExpression | CLASS )
                            int alt92=5;
                            switch ( input.LA(1) ) {
                            case IDENT:
                                {
                                alt92=1;
                                }
                                break;
                            case THIS:
                                {
                                alt92=2;
                                }
                                break;
                            case SUPER:
                                {
                                alt92=3;
                                }
                                break;
                            case CLASS_CONSTRUCTOR_CALL:
                                {
                                alt92=4;
                                }
                                break;
                            case CLASS:
                                {
                                alt92=5;
                                }
                                break;
                            default:
                                if (backtracking>0) {failed=true; return ;}
                                NoViableAltException nvae =
                                    new NoViableAltException("509:17: ( IDENT | THIS | SUPER | innerNewExpression | CLASS )", 92, 0, input);

                                throw nvae;
                            }

                            switch (alt92) {
                                case 1 :
                                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:509:21: IDENT
                                    {
                                    match(input,IDENT,FOLLOW_IDENT_in_primaryExpression3605); if (failed) return ;

                                    }
                                    break;
                                case 2 :
                                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:510:21: THIS
                                    {
                                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3627); if (failed) return ;

                                    }
                                    break;
                                case 3 :
                                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:511:21: SUPER
                                    {
                                    match(input,SUPER,FOLLOW_SUPER_in_primaryExpression3649); if (failed) return ;

                                    }
                                    break;
                                case 4 :
                                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:512:21: innerNewExpression
                                    {
                                    pushFollow(FOLLOW_innerNewExpression_in_primaryExpression3671);
                                    innerNewExpression();
                                    _fsp--;
                                    if (failed) return ;

                                    }
                                    break;
                                case 5 :
                                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:513:21: CLASS
                                    {
                                    match(input,CLASS,FOLLOW_CLASS_in_primaryExpression3693); if (failed) return ;

                                    }
                                    break;

                            }


                            }
                            break;
                        case 2 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:515:17: primitiveType CLASS
                            {
                            pushFollow(FOLLOW_primitiveType_in_primaryExpression3729);
                            primitiveType();
                            _fsp--;
                            if (failed) return ;
                            match(input,CLASS,FOLLOW_CLASS_in_primaryExpression3731); if (failed) return ;

                            }
                            break;
                        case 3 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:516:17: VOID CLASS
                            {
                            match(input,VOID,FOLLOW_VOID_in_primaryExpression3749); if (failed) return ;
                            match(input,CLASS,FOLLOW_CLASS_in_primaryExpression3751); if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:519:9: parenthesizedExpression
                    {
                    pushFollow(FOLLOW_parenthesizedExpression_in_primaryExpression3785);
                    parenthesizedExpression();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:520:9: IDENT
                    {
                    match(input,IDENT,FOLLOW_IDENT_in_primaryExpression3795); if (failed) return ;

                    }
                    break;
                case 4 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:521:9: ^( METHOD_CALL primaryExpression ( genericTypeArgumentList )? arguments )
                    {
                    match(input,METHOD_CALL,FOLLOW_METHOD_CALL_in_primaryExpression3806); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3808);
                    primaryExpression();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:521:41: ( genericTypeArgumentList )?
                    int alt94=2;
                    int LA94_0 = input.LA(1);

                    if ( (LA94_0==GENERIC_TYPE_ARG_LIST) ) {
                        alt94=1;
                    }
                    switch (alt94) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                            {
                            pushFollow(FOLLOW_genericTypeArgumentList_in_primaryExpression3810);
                            genericTypeArgumentList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_arguments_in_primaryExpression3813);
                    arguments();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 5 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:522:9: explicitConstructorCall
                    {
                    pushFollow(FOLLOW_explicitConstructorCall_in_primaryExpression3824);
                    explicitConstructorCall();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 6 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:523:9: ^( ARRAY_ELEMENT_ACCESS primaryExpression expression )
                    {
                    match(input,ARRAY_ELEMENT_ACCESS,FOLLOW_ARRAY_ELEMENT_ACCESS_in_primaryExpression3835); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    pushFollow(FOLLOW_primaryExpression_in_primaryExpression3837);
                    primaryExpression();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_expression_in_primaryExpression3839);
                    expression();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 7 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:524:9: literal
                    {
                    pushFollow(FOLLOW_literal_in_primaryExpression3850);
                    literal();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 8 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:525:9: newExpression
                    {
                    pushFollow(FOLLOW_newExpression_in_primaryExpression3860);
                    newExpression();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 9 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:526:9: THIS
                    {
                    match(input,THIS,FOLLOW_THIS_in_primaryExpression3870); if (failed) return ;

                    }
                    break;
                case 10 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:527:9: arrayTypeDeclarator
                    {
                    pushFollow(FOLLOW_arrayTypeDeclarator_in_primaryExpression3880);
                    arrayTypeDeclarator();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 11 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:528:9: SUPER
                    {
                    match(input,SUPER,FOLLOW_SUPER_in_primaryExpression3890); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 63, primaryExpression_StartIndex); }
        }
        return ;
    }
    // $ANTLR end primaryExpression


    // $ANTLR start explicitConstructorCall
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:531:1: explicitConstructorCall : ( ^( THIS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? arguments ) | ^( SUPER_CONSTRUCTOR_CALL ( primaryExpression )? ( genericTypeArgumentList )? arguments ) );
    public final void explicitConstructorCall() throws RecognitionException {
        int explicitConstructorCall_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 64) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:532:5: ( ^( THIS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? arguments ) | ^( SUPER_CONSTRUCTOR_CALL ( primaryExpression )? ( genericTypeArgumentList )? arguments ) )
            int alt99=2;
            int LA99_0 = input.LA(1);

            if ( (LA99_0==THIS_CONSTRUCTOR_CALL) ) {
                alt99=1;
            }
            else if ( (LA99_0==SUPER_CONSTRUCTOR_CALL) ) {
                alt99=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("531:1: explicitConstructorCall : ( ^( THIS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? arguments ) | ^( SUPER_CONSTRUCTOR_CALL ( primaryExpression )? ( genericTypeArgumentList )? arguments ) );", 99, 0, input);

                throw nvae;
            }
            switch (alt99) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:532:9: ^( THIS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? arguments )
                    {
                    match(input,THIS_CONSTRUCTOR_CALL,FOLLOW_THIS_CONSTRUCTOR_CALL_in_explicitConstructorCall3914); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:532:33: ( genericTypeArgumentList )?
                    int alt96=2;
                    int LA96_0 = input.LA(1);

                    if ( (LA96_0==GENERIC_TYPE_ARG_LIST) ) {
                        alt96=1;
                    }
                    switch (alt96) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                            {
                            pushFollow(FOLLOW_genericTypeArgumentList_in_explicitConstructorCall3916);
                            genericTypeArgumentList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_arguments_in_explicitConstructorCall3919);
                    arguments();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:533:9: ^( SUPER_CONSTRUCTOR_CALL ( primaryExpression )? ( genericTypeArgumentList )? arguments )
                    {
                    match(input,SUPER_CONSTRUCTOR_CALL,FOLLOW_SUPER_CONSTRUCTOR_CALL_in_explicitConstructorCall3931); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:533:34: ( primaryExpression )?
                    int alt97=2;
                    int LA97_0 = input.LA(1);

                    if ( (LA97_0==DOT||LA97_0==FALSE||LA97_0==NULL||LA97_0==SUPER||LA97_0==THIS||LA97_0==TRUE||LA97_0==ARRAY_DECLARATOR||LA97_0==ARRAY_ELEMENT_ACCESS||LA97_0==CLASS_CONSTRUCTOR_CALL||LA97_0==METHOD_CALL||LA97_0==PARENTESIZED_EXPR||(LA97_0>=STATIC_ARRAY_CREATOR && LA97_0<=SUPER_CONSTRUCTOR_CALL)||LA97_0==THIS_CONSTRUCTOR_CALL||(LA97_0>=IDENT && LA97_0<=STRING_LITERAL)) ) {
                        alt97=1;
                    }
                    switch (alt97) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: primaryExpression
                            {
                            pushFollow(FOLLOW_primaryExpression_in_explicitConstructorCall3933);
                            primaryExpression();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:533:53: ( genericTypeArgumentList )?
                    int alt98=2;
                    int LA98_0 = input.LA(1);

                    if ( (LA98_0==GENERIC_TYPE_ARG_LIST) ) {
                        alt98=1;
                    }
                    switch (alt98) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                            {
                            pushFollow(FOLLOW_genericTypeArgumentList_in_explicitConstructorCall3936);
                            genericTypeArgumentList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_arguments_in_explicitConstructorCall3939);
                    arguments();
                    _fsp--;
                    if (failed) return ;

                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 64, explicitConstructorCall_StartIndex); }
        }
        return ;
    }
    // $ANTLR end explicitConstructorCall


    // $ANTLR start arrayTypeDeclarator
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:536:1: arrayTypeDeclarator : ^( ARRAY_DECLARATOR ( arrayTypeDeclarator | qualifiedIdentifier | primitiveType ) ) ;
    public final void arrayTypeDeclarator() throws RecognitionException {
        int arrayTypeDeclarator_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 65) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:537:5: ( ^( ARRAY_DECLARATOR ( arrayTypeDeclarator | qualifiedIdentifier | primitiveType ) ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:537:9: ^( ARRAY_DECLARATOR ( arrayTypeDeclarator | qualifiedIdentifier | primitiveType ) )
            {
            match(input,ARRAY_DECLARATOR,FOLLOW_ARRAY_DECLARATOR_in_arrayTypeDeclarator3960); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:537:28: ( arrayTypeDeclarator | qualifiedIdentifier | primitiveType )
            int alt100=3;
            switch ( input.LA(1) ) {
            case ARRAY_DECLARATOR:
                {
                alt100=1;
                }
                break;
            case DOT:
            case IDENT:
                {
                alt100=2;
                }
                break;
            case BOOLEAN:
            case BYTE:
            case CHAR:
            case DOUBLE:
            case FLOAT:
            case INT:
            case LONG:
            case SHORT:
                {
                alt100=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("537:28: ( arrayTypeDeclarator | qualifiedIdentifier | primitiveType )", 100, 0, input);

                throw nvae;
            }

            switch (alt100) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:537:29: arrayTypeDeclarator
                    {
                    pushFollow(FOLLOW_arrayTypeDeclarator_in_arrayTypeDeclarator3963);
                    arrayTypeDeclarator();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:537:51: qualifiedIdentifier
                    {
                    pushFollow(FOLLOW_qualifiedIdentifier_in_arrayTypeDeclarator3967);
                    qualifiedIdentifier();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 3 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:537:73: primitiveType
                    {
                    pushFollow(FOLLOW_primitiveType_in_arrayTypeDeclarator3971);
                    primitiveType();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 65, arrayTypeDeclarator_StartIndex); }
        }
        return ;
    }
    // $ANTLR end arrayTypeDeclarator


    // $ANTLR start newExpression
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:540:1: newExpression : ( ^( STATIC_ARRAY_CREATOR ( primitiveType newArrayConstruction | ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction ) ) | ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? qualifiedTypeIdent arguments ( classTopLevelScope )? ) );
    public final void newExpression() throws RecognitionException {
        int newExpression_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 66) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:541:5: ( ^( STATIC_ARRAY_CREATOR ( primitiveType newArrayConstruction | ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction ) ) | ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? qualifiedTypeIdent arguments ( classTopLevelScope )? ) )
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( (LA105_0==STATIC_ARRAY_CREATOR) ) {
                alt105=1;
            }
            else if ( (LA105_0==CLASS_CONSTRUCTOR_CALL) ) {
                alt105=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("540:1: newExpression : ( ^( STATIC_ARRAY_CREATOR ( primitiveType newArrayConstruction | ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction ) ) | ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? qualifiedTypeIdent arguments ( classTopLevelScope )? ) );", 105, 0, input);

                throw nvae;
            }
            switch (alt105) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:541:9: ^( STATIC_ARRAY_CREATOR ( primitiveType newArrayConstruction | ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction ) )
                    {
                    match(input,STATIC_ARRAY_CREATOR,FOLLOW_STATIC_ARRAY_CREATOR_in_newExpression3995); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:542:13: ( primitiveType newArrayConstruction | ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction )
                    int alt102=2;
                    int LA102_0 = input.LA(1);

                    if ( (LA102_0==BOOLEAN||LA102_0==BYTE||LA102_0==CHAR||LA102_0==DOUBLE||LA102_0==FLOAT||(LA102_0>=INT && LA102_0<=LONG)||LA102_0==SHORT) ) {
                        alt102=1;
                    }
                    else if ( (LA102_0==GENERIC_TYPE_ARG_LIST||LA102_0==QUALIFIED_TYPE_IDENT) ) {
                        alt102=2;
                    }
                    else {
                        if (backtracking>0) {failed=true; return ;}
                        NoViableAltException nvae =
                            new NoViableAltException("542:13: ( primitiveType newArrayConstruction | ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction )", 102, 0, input);

                        throw nvae;
                    }
                    switch (alt102) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:542:17: primitiveType newArrayConstruction
                            {
                            pushFollow(FOLLOW_primitiveType_in_newExpression4013);
                            primitiveType();
                            _fsp--;
                            if (failed) return ;
                            pushFollow(FOLLOW_newArrayConstruction_in_newExpression4015);
                            newArrayConstruction();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;
                        case 2 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:543:17: ( genericTypeArgumentList )? qualifiedTypeIdent newArrayConstruction
                            {
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:543:17: ( genericTypeArgumentList )?
                            int alt101=2;
                            int LA101_0 = input.LA(1);

                            if ( (LA101_0==GENERIC_TYPE_ARG_LIST) ) {
                                alt101=1;
                            }
                            switch (alt101) {
                                case 1 :
                                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                                    {
                                    pushFollow(FOLLOW_genericTypeArgumentList_in_newExpression4033);
                                    genericTypeArgumentList();
                                    _fsp--;
                                    if (failed) return ;

                                    }
                                    break;

                            }

                            pushFollow(FOLLOW_qualifiedTypeIdent_in_newExpression4036);
                            qualifiedTypeIdent();
                            _fsp--;
                            if (failed) return ;
                            pushFollow(FOLLOW_newArrayConstruction_in_newExpression4038);
                            newArrayConstruction();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:546:9: ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? qualifiedTypeIdent arguments ( classTopLevelScope )? )
                    {
                    match(input,CLASS_CONSTRUCTOR_CALL,FOLLOW_CLASS_CONSTRUCTOR_CALL_in_newExpression4073); if (failed) return ;

                    match(input, Token.DOWN, null); if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:546:34: ( genericTypeArgumentList )?
                    int alt103=2;
                    int LA103_0 = input.LA(1);

                    if ( (LA103_0==GENERIC_TYPE_ARG_LIST) ) {
                        alt103=1;
                    }
                    switch (alt103) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                            {
                            pushFollow(FOLLOW_genericTypeArgumentList_in_newExpression4075);
                            genericTypeArgumentList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }

                    pushFollow(FOLLOW_qualifiedTypeIdent_in_newExpression4078);
                    qualifiedTypeIdent();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_arguments_in_newExpression4080);
                    arguments();
                    _fsp--;
                    if (failed) return ;
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:546:88: ( classTopLevelScope )?
                    int alt104=2;
                    int LA104_0 = input.LA(1);

                    if ( (LA104_0==CLASS_TOP_LEVEL_SCOPE) ) {
                        alt104=1;
                    }
                    switch (alt104) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: classTopLevelScope
                            {
                            pushFollow(FOLLOW_classTopLevelScope_in_newExpression4082);
                            classTopLevelScope();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    match(input, Token.UP, null); if (failed) return ;

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 66, newExpression_StartIndex); }
        }
        return ;
    }
    // $ANTLR end newExpression


    // $ANTLR start innerNewExpression
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:549:1: innerNewExpression : ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? IDENT arguments ( classTopLevelScope )? ) ;
    public final void innerNewExpression() throws RecognitionException {
        int innerNewExpression_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 67) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:550:5: ( ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? IDENT arguments ( classTopLevelScope )? ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:550:9: ^( CLASS_CONSTRUCTOR_CALL ( genericTypeArgumentList )? IDENT arguments ( classTopLevelScope )? )
            {
            match(input,CLASS_CONSTRUCTOR_CALL,FOLLOW_CLASS_CONSTRUCTOR_CALL_in_innerNewExpression4105); if (failed) return ;

            match(input, Token.DOWN, null); if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:550:34: ( genericTypeArgumentList )?
            int alt106=2;
            int LA106_0 = input.LA(1);

            if ( (LA106_0==GENERIC_TYPE_ARG_LIST) ) {
                alt106=1;
            }
            switch (alt106) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: genericTypeArgumentList
                    {
                    pushFollow(FOLLOW_genericTypeArgumentList_in_innerNewExpression4107);
                    genericTypeArgumentList();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }

            match(input,IDENT,FOLLOW_IDENT_in_innerNewExpression4110); if (failed) return ;
            pushFollow(FOLLOW_arguments_in_innerNewExpression4112);
            arguments();
            _fsp--;
            if (failed) return ;
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:550:75: ( classTopLevelScope )?
            int alt107=2;
            int LA107_0 = input.LA(1);

            if ( (LA107_0==CLASS_TOP_LEVEL_SCOPE) ) {
                alt107=1;
            }
            switch (alt107) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: classTopLevelScope
                    {
                    pushFollow(FOLLOW_classTopLevelScope_in_innerNewExpression4114);
                    classTopLevelScope();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;

            }


            match(input, Token.UP, null); if (failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 67, innerNewExpression_StartIndex); }
        }
        return ;
    }
    // $ANTLR end innerNewExpression


    // $ANTLR start newArrayConstruction
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:553:1: newArrayConstruction : ( arrayDeclaratorList arrayInitializer | ( expression )+ ( arrayDeclaratorList )? );
    public final void newArrayConstruction() throws RecognitionException {
        int newArrayConstruction_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 68) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:554:5: ( arrayDeclaratorList arrayInitializer | ( expression )+ ( arrayDeclaratorList )? )
            int alt110=2;
            int LA110_0 = input.LA(1);

            if ( (LA110_0==ARRAY_DECLARATOR_LIST) ) {
                alt110=1;
            }
            else if ( (LA110_0==EXPR) ) {
                alt110=2;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                NoViableAltException nvae =
                    new NoViableAltException("553:1: newArrayConstruction : ( arrayDeclaratorList arrayInitializer | ( expression )+ ( arrayDeclaratorList )? );", 110, 0, input);

                throw nvae;
            }
            switch (alt110) {
                case 1 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:554:9: arrayDeclaratorList arrayInitializer
                    {
                    pushFollow(FOLLOW_arrayDeclaratorList_in_newArrayConstruction4139);
                    arrayDeclaratorList();
                    _fsp--;
                    if (failed) return ;
                    pushFollow(FOLLOW_arrayInitializer_in_newArrayConstruction4141);
                    arrayInitializer();
                    _fsp--;
                    if (failed) return ;

                    }
                    break;
                case 2 :
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:555:9: ( expression )+ ( arrayDeclaratorList )?
                    {
                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:555:9: ( expression )+
                    int cnt108=0;
                    loop108:
                    do {
                        int alt108=2;
                        int LA108_0 = input.LA(1);

                        if ( (LA108_0==EXPR) ) {
                            alt108=1;
                        }


                        switch (alt108) {
                    	case 1 :
                    	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                    	    {
                    	    pushFollow(FOLLOW_expression_in_newArrayConstruction4151);
                    	    expression();
                    	    _fsp--;
                    	    if (failed) return ;

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt108 >= 1 ) break loop108;
                    	    if (backtracking>0) {failed=true; return ;}
                                EarlyExitException eee =
                                    new EarlyExitException(108, input);
                                throw eee;
                        }
                        cnt108++;
                    } while (true);

                    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:555:21: ( arrayDeclaratorList )?
                    int alt109=2;
                    int LA109_0 = input.LA(1);

                    if ( (LA109_0==ARRAY_DECLARATOR_LIST) ) {
                        alt109=1;
                    }
                    switch (alt109) {
                        case 1 :
                            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: arrayDeclaratorList
                            {
                            pushFollow(FOLLOW_arrayDeclaratorList_in_newArrayConstruction4154);
                            arrayDeclaratorList();
                            _fsp--;
                            if (failed) return ;

                            }
                            break;

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 68, newArrayConstruction_StartIndex); }
        }
        return ;
    }
    // $ANTLR end newArrayConstruction


    // $ANTLR start arguments
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:558:1: arguments : ^( ARGUMENT_LIST ( expression )* ) ;
    public final void arguments() throws RecognitionException {
        int arguments_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 69) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:559:5: ( ^( ARGUMENT_LIST ( expression )* ) )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:559:9: ^( ARGUMENT_LIST ( expression )* )
            {
            match(input,ARGUMENT_LIST,FOLLOW_ARGUMENT_LIST_in_arguments4175); if (failed) return ;

            if ( input.LA(1)==Token.DOWN ) {
                match(input, Token.DOWN, null); if (failed) return ;
                // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:559:25: ( expression )*
                loop111:
                do {
                    int alt111=2;
                    int LA111_0 = input.LA(1);

                    if ( (LA111_0==EXPR) ) {
                        alt111=1;
                    }


                    switch (alt111) {
                	case 1 :
                	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
                	    {
                	    pushFollow(FOLLOW_expression_in_arguments4177);
                	    expression();
                	    _fsp--;
                	    if (failed) return ;

                	    }
                	    break;

                	default :
                	    break loop111;
                    }
                } while (true);


                match(input, Token.UP, null); if (failed) return ;
            }

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 69, arguments_StartIndex); }
        }
        return ;
    }
    // $ANTLR end arguments


    // $ANTLR start literal
    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:562:1: literal : ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | FLOATING_POINT_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | TRUE | FALSE | NULL );
    public final void literal() throws RecognitionException {
        int literal_StartIndex = input.index();
        try {
            if ( backtracking>0 && alreadyParsedRule(input, 70) ) { return ; }
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:563:5: ( HEX_LITERAL | OCTAL_LITERAL | DECIMAL_LITERAL | FLOATING_POINT_LITERAL | CHARACTER_LITERAL | STRING_LITERAL | TRUE | FALSE | NULL )
            // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:
            {
            if ( input.LA(1)==FALSE||input.LA(1)==NULL||input.LA(1)==TRUE||(input.LA(1)>=HEX_LITERAL && input.LA(1)<=STRING_LITERAL) ) {
                input.consume();
                errorRecovery=false;failed=false;
            }
            else {
                if (backtracking>0) {failed=true; return ;}
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recoverFromMismatchedSet(input,mse,FOLLOW_set_in_literal0);    throw mse;
            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
            if ( backtracking>0 ) { memoize(input, 70, literal_StartIndex); }
        }
        return ;
    }
    // $ANTLR end literal

    // $ANTLR start synpred125
    public final void synpred125_fragment() throws RecognitionException {   
        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:35: ( switchCaseLabel )
        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:427:35: switchCaseLabel
        {
        pushFollow(FOLLOW_switchCaseLabel_in_synpred1252645);
        switchCaseLabel();
        _fsp--;
        if (failed) return ;

        }
    }
    // $ANTLR end synpred125

    // $ANTLR start synpred132
    public final void synpred132_fragment() throws RecognitionException {   
        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:48: ( ( expression )* )
        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:48: ( expression )*
        {
        // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:439:48: ( expression )*
        loop142:
        do {
            int alt142=2;
            int LA142_0 = input.LA(1);

            if ( (LA142_0==EXPR) ) {
                alt142=1;
            }


            switch (alt142) {
        	case 1 :
        	    // D:\\Holger\\Eigene Dateien\\Faculdade\\IC\\artefatos_produzidos\\ANTLRGrammars\\JavaGrammars\\JavaASTFirstPass.g:0:0: expression
        	    {
        	    pushFollow(FOLLOW_expression_in_synpred1322746);
        	    expression();
        	    _fsp--;
        	    if (failed) return ;

        	    }
        	    break;

        	default :
        	    break loop142;
            }
        } while (true);


        }
    }
    // $ANTLR end synpred132

    public final boolean synpred125() {
        backtracking++;
        int start = input.mark();
        try {
            synpred125_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred132() {
        backtracking++;
        int start = input.mark();
        try {
            synpred132_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }


 

    public static final BitSet FOLLOW_JAVA_SOURCE_in_javaSource96 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationList_in_javaSource98 = new BitSet(new long[]{0x2000000000000088L,0x0000000000106008L});
    public static final BitSet FOLLOW_packageDeclaration_in_javaSource100 = new BitSet(new long[]{0x2000000000000088L,0x0000000000006008L});
    public static final BitSet FOLLOW_importDeclaration_in_javaSource103 = new BitSet(new long[]{0x2000000000000088L,0x0000000000006008L});
    public static final BitSet FOLLOW_typeDeclaration_in_javaSource106 = new BitSet(new long[]{0x2000000000000088L,0x0000000000002008L});
    public static final BitSet FOLLOW_PACKAGE_in_packageDeclaration125 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_packageDeclaration129 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IMPORT_in_importDeclaration157 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_STATIC_in_importDeclaration159 = new BitSet(new long[]{0x0000000000008000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_importDeclaration162 = new BitSet(new long[]{0x0000000000010008L});
    public static final BitSet FOLLOW_DOTSTAR_in_importDeclaration164 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_in_typeDeclaration192 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_typeDeclaration194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_typeDeclaration198 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x0000000000001401L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_typeDeclaration213 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x0000000000001001L});
    public static final BitSet FOLLOW_extendsClause_in_typeDeclaration216 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_implementsClause_in_typeDeclaration219 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
    public static final BitSet FOLLOW_classTopLevelScope_in_typeDeclaration222 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_INTERFACE_in_typeDeclaration242 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_typeDeclaration244 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_typeDeclaration248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000C01L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_typeDeclaration262 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000801L});
    public static final BitSet FOLLOW_extendsClause_in_typeDeclaration265 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
    public static final BitSet FOLLOW_interfaceTopLevelScope_in_typeDeclaration268 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ENUM_in_typeDeclaration286 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_typeDeclaration288 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_typeDeclaration292 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L,0x0000000000001000L});
    public static final BitSet FOLLOW_implementsClause_in_typeDeclaration306 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
    public static final BitSet FOLLOW_enumTopLevelScope_in_typeDeclaration309 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_AT_in_typeDeclaration327 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_typeDeclaration329 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_typeDeclaration331 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
    public static final BitSet FOLLOW_annotationTopLevelScope_in_typeDeclaration333 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXTENDS_CLAUSE_in_extendsClause370 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_extendsClause372 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_IMPLEMENTS_CLAUSE_in_implementsClause401 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_implementsClause403 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_GENERIC_TYPE_PARAM_LIST_in_genericTypeParameterList433 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericTypeParameter_in_genericTypeParameterList435 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_genericTypeParameter457 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_bound_in_genericTypeParameter459 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXTENDS_BOUND_LIST_in_bound489 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_bound491 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_ENUM_TOP_LEVEL_SCOPE_in_enumTopLevelScope513 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_enumConstant_in_enumTopLevelScope515 = new BitSet(new long[]{0x0000000000000008L,0x0800000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_classTopLevelScope_in_enumTopLevelScope518 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENT_in_enumConstant544 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationList_in_enumConstant546 = new BitSet(new long[]{0x0000000000000008L,0x0801000000000000L});
    public static final BitSet FOLLOW_arguments_in_enumConstant548 = new BitSet(new long[]{0x0000000000000008L,0x0800000000000000L});
    public static final BitSet FOLLOW_classTopLevelScope_in_enumConstant551 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_TOP_LEVEL_SCOPE_in_classTopLevelScope582 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_classScopeDeclarations_in_classTopLevelScope584 = new BitSet(new long[]{0x2000000000000088L,0x1600000000002008L,0x0000000900000100L});
    public static final BitSet FOLLOW_CLASS_INSTANCE_INITIALIZER_in_classScopeDeclarations610 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_classScopeDeclarations612 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_STATIC_INITIALIZER_in_classScopeDeclarations624 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_classScopeDeclarations626 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FUNCTION_METHOD_DECL_in_classScopeDeclarations638 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_classScopeDeclarations640 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000400L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_classScopeDeclarations642 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_classScopeDeclarations645 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_classScopeDeclarations647 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_formalParameterList_in_classScopeDeclarations649 = new BitSet(new long[]{0x0000000000000008L,0x0024000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_arrayDeclaratorList_in_classScopeDeclarations651 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_throwsClause_in_classScopeDeclarations654 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L});
    public static final BitSet FOLLOW_block_in_classScopeDeclarations657 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VOID_METHOD_DECL_in_classScopeDeclarations670 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_classScopeDeclarations672 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000400L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_classScopeDeclarations674 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_classScopeDeclarations677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_formalParameterList_in_classScopeDeclarations679 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_throwsClause_in_classScopeDeclarations681 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L});
    public static final BitSet FOLLOW_block_in_classScopeDeclarations684 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VAR_DECLARATION_in_classScopeDeclarations697 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_classScopeDeclarations699 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_classScopeDeclarations701 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
    public static final BitSet FOLLOW_variableDeclaratorList_in_classScopeDeclarations703 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CONSTRUCTOR_DECL_in_classScopeDeclarations715 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_classScopeDeclarations717 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000420L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_classScopeDeclarations719 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_formalParameterList_in_classScopeDeclarations722 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_throwsClause_in_classScopeDeclarations724 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_block_in_classScopeDeclarations727 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_typeDeclaration_in_classScopeDeclarations738 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INTERFACE_TOP_LEVEL_SCOPE_in_interfaceTopLevelScope762 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_interfaceScopeDeclarations_in_interfaceTopLevelScope764 = new BitSet(new long[]{0x2000000000000088L,0x0000000000002008L,0x0000000900000100L});
    public static final BitSet FOLLOW_FUNCTION_METHOD_DECL_in_interfaceScopeDeclarations790 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_interfaceScopeDeclarations792 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000400L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_interfaceScopeDeclarations794 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_interfaceScopeDeclarations797 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_interfaceScopeDeclarations799 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_formalParameterList_in_interfaceScopeDeclarations801 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_arrayDeclaratorList_in_interfaceScopeDeclarations803 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_throwsClause_in_interfaceScopeDeclarations806 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VOID_METHOD_DECL_in_interfaceScopeDeclarations819 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_interfaceScopeDeclarations821 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000400L});
    public static final BitSet FOLLOW_genericTypeParameterList_in_interfaceScopeDeclarations823 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_interfaceScopeDeclarations826 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
    public static final BitSet FOLLOW_formalParameterList_in_interfaceScopeDeclarations828 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_throwsClause_in_interfaceScopeDeclarations830 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VAR_DECLARATION_in_interfaceScopeDeclarations921 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_interfaceScopeDeclarations923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_interfaceScopeDeclarations925 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
    public static final BitSet FOLLOW_variableDeclaratorList_in_interfaceScopeDeclarations927 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_typeDeclaration_in_interfaceScopeDeclarations938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR_DECLARATOR_LIST_in_variableDeclaratorList958 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_variableDeclarator_in_variableDeclaratorList960 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000200000000L});
    public static final BitSet FOLLOW_VAR_DECLARATOR_in_variableDeclarator982 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_variableDeclaratorId_in_variableDeclarator984 = new BitSet(new long[]{0x0000000000000008L,0x4010000000000000L});
    public static final BitSet FOLLOW_variableInitializer_in_variableDeclarator986 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENT_in_variableDeclaratorId1012 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_arrayDeclaratorList_in_variableDeclaratorId1014 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_arrayInitializer_in_variableInitializer1035 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_variableInitializer1045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LBRACK_in_arrayDeclarator1064 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_RBRACK_in_arrayDeclarator1066 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ARRAY_DECLARATOR_LIST_in_arrayDeclaratorList1086 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_ARRAY_DECLARATOR_in_arrayDeclaratorList1088 = new BitSet(new long[]{0x0000000000000008L,0x0002000000000000L});
    public static final BitSet FOLLOW_ARRAY_INITIALIZER_in_arrayInitializer1116 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer1118 = new BitSet(new long[]{0x0000000000000008L,0x4010000000000000L});
    public static final BitSet FOLLOW_THROWS_CLAUSE_in_throwsClause1140 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_throwsClause1142 = new BitSet(new long[]{0x0000000000008008L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_MODIFIER_LIST_in_modifierList1164 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifier_in_modifierList1166 = new BitSet(new long[]{0x0020000000000088L,0x000000444CE20040L});
    public static final BitSet FOLLOW_PUBLIC_in_modifier1187 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PROTECTED_in_modifier1197 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PRIVATE_in_modifier1207 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STATIC_in_modifier1217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ABSTRACT_in_modifier1227 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NATIVE_in_modifier1237 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SYNCHRONIZED_in_modifier1247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TRANSIENT_in_modifier1257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VOLATILE_in_modifier1267 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_STRICTFP_in_modifier1277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_localModifier_in_modifier1287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LOCAL_MODIFIER_LIST_in_localModifierList1307 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_localModifier_in_localModifierList1309 = new BitSet(new long[]{0x0000000000000088L,0x0000000000000040L});
    public static final BitSet FOLLOW_FINAL_in_localModifier1330 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_annotation_in_localModifier1340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_TYPE_in_type1360 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primitiveType_in_type1363 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
    public static final BitSet FOLLOW_qualifiedTypeIdent_in_type1367 = new BitSet(new long[]{0x0000000000000008L,0x0004000000000000L});
    public static final BitSet FOLLOW_arrayDeclaratorList_in_type1370 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_QUALIFIED_TYPE_IDENT_in_qualifiedTypeIdent1392 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_typeIdent_in_qualifiedTypeIdent1394 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_typeIdent1417 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_typeIdent1419 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_set_in_primitiveType0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_GENERIC_TYPE_ARG_LIST_in_genericTypeArgumentList1530 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericTypeArgument_in_genericTypeArgumentList1532 = new BitSet(new long[]{0x0000010000000008L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_genericTypeArgument1557 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_QUESTION_in_genericTypeArgument1568 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericWildcardBoundType_in_genericTypeArgument1570 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXTENDS_in_genericWildcardBoundType1710 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_genericWildcardBoundType1712 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SUPER_in_genericWildcardBoundType1724 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_genericWildcardBoundType1726 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORMAL_PARAM_LIST_in_formalParameterList1747 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_formalParameterStandardDecl_in_formalParameterList1749 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x00000000000000C0L});
    public static final BitSet FOLLOW_formalParameterVarargDecl_in_formalParameterList1752 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORMAL_PARAM_STD_DECL_in_formalParameterStandardDecl1779 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_localModifierList_in_formalParameterStandardDecl1781 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_formalParameterStandardDecl1783 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterStandardDecl1785 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FORMAL_PARAM_VARARG_DECL_in_formalParameterVarargDecl1810 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_localModifierList_in_formalParameterVarargDecl1812 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_formalParameterVarargDecl1814 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterVarargDecl1816 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENT_in_qualifiedIdentifier1840 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_qualifiedIdentifier1851 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_qualifiedIdentifier1853 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_qualifiedIdentifier1855 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ANNOTATION_LIST_in_annotationList1882 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotation_in_annotationList1884 = new BitSet(new long[]{0x0000000000000088L});
    public static final BitSet FOLLOW_AT_in_annotation1906 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_annotation1908 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L});
    public static final BitSet FOLLOW_annotationInit_in_annotation1910 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ANNOTATION_INIT_BLOCK_in_annotationInit1936 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationInitializers_in_annotationInit1938 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ANNOTATION_INIT_KEY_LIST_in_annotationInitializers1959 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationInitializer_in_annotationInitializers1961 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_ANNOTATION_INIT_DEFAULT_KEY_in_annotationInitializers1974 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationElementValue_in_annotationInitializers1976 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IDENT_in_annotationInitializer2001 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationElementValue_in_annotationInitializer2003 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ANNOTATION_INIT_ARRAY_ELEMENT_in_annotationElementValue2028 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationElementValue_in_annotationElementValue2030 = new BitSet(new long[]{0x0000000000000088L,0x4000010000000000L});
    public static final BitSet FOLLOW_annotation_in_annotationElementValue2042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_annotationElementValue2052 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ANNOTATION_TOP_LEVEL_SCOPE_in_annotationTopLevelScope2076 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationScopeDeclarations_in_annotationTopLevelScope2078 = new BitSet(new long[]{0x2000000000000088L,0x0000200000002008L,0x0000000100000000L});
    public static final BitSet FOLLOW_ANNOTATION_METHOD_DECL_in_annotationScopeDeclarations2104 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_annotationScopeDeclarations2106 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_annotationScopeDeclarations2108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_annotationScopeDeclarations2110 = new BitSet(new long[]{0x8000000000000008L});
    public static final BitSet FOLLOW_annotationDefaultValue_in_annotationScopeDeclarations2112 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VAR_DECLARATION_in_annotationScopeDeclarations2125 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_modifierList_in_annotationScopeDeclarations2127 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_annotationScopeDeclarations2129 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
    public static final BitSet FOLLOW_variableDeclaratorList_in_annotationScopeDeclarations2131 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_typeDeclaration_in_annotationScopeDeclarations2142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DEFAULT_in_annotationDefaultValue2166 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_annotationElementValue_in_annotationDefaultValue2168 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BLOCK_SCOPE_in_block2191 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_blockStatement_in_block2193 = new BitSet(new long[]{0x6140100000000088L,0x4020009161002609L,0x0000000100002004L});
    public static final BitSet FOLLOW_localVariableDeclaration_in_blockStatement2218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_typeDeclaration_in_blockStatement2228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_statement_in_blockStatement2238 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VAR_DECLARATION_in_localVariableDeclaration2262 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_localModifierList_in_localVariableDeclaration2264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_localVariableDeclaration2266 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000400000000L});
    public static final BitSet FOLLOW_variableDeclaratorList_in_localVariableDeclaration2268 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_block_in_statement2301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASSERT_in_statement2312 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_statement2314 = new BitSet(new long[]{0x0000000000000008L,0x4000000000000000L});
    public static final BitSet FOLLOW_expression_in_statement2316 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_IF_in_statement2329 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_statement2331 = new BitSet(new long[]{0x4140100000000000L,0x4020009161000601L,0x0000000000002004L});
    public static final BitSet FOLLOW_statement_in_statement2333 = new BitSet(new long[]{0x4140100000000008L,0x4020009161000601L,0x0000000000002004L});
    public static final BitSet FOLLOW_statement_in_statement2335 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FOR_in_statement2348 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_forInit_in_statement2350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_forCondition_in_statement2352 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_forUpdater_in_statement2354 = new BitSet(new long[]{0x4140100000000000L,0x4020009161000601L,0x0000000000002004L});
    public static final BitSet FOLLOW_statement_in_statement2356 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FOR_EACH_in_statement2368 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_localModifierList_in_statement2370 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_statement2372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_statement2374 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
    public static final BitSet FOLLOW_expression_in_statement2376 = new BitSet(new long[]{0x4140100000000000L,0x4020009161000601L,0x0000000000002004L});
    public static final BitSet FOLLOW_statement_in_statement2378 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_WHILE_in_statement2391 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_statement2393 = new BitSet(new long[]{0x4140100000000000L,0x4020009161000601L,0x0000000000002004L});
    public static final BitSet FOLLOW_statement_in_statement2395 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DO_in_statement2407 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_statement_in_statement2409 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_statement2411 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_TRY_in_statement2423 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_block_in_statement2425 = new BitSet(new long[]{0x0000000000000008L,0x00A0000000000000L});
    public static final BitSet FOLLOW_catches_in_statement2427 = new BitSet(new long[]{0x0000000000000008L,0x0020000000000000L});
    public static final BitSet FOLLOW_block_in_statement2430 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SWITCH_in_statement2445 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_statement2447 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_switchBlockLabels_in_statement2449 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SYNCHRONIZED_in_statement2461 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_statement2463 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_block_in_statement2465 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_RETURN_in_statement2477 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_statement2479 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_THROW_in_statement2492 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_statement2494 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BREAK_in_statement2506 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENT_in_statement2508 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CONTINUE_in_statement2521 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENT_in_statement2523 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LABELED_STATEMENT_in_statement2536 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_IDENT_in_statement2538 = new BitSet(new long[]{0x4140100000000000L,0x4020009161000601L,0x0000000000002004L});
    public static final BitSet FOLLOW_statement_in_statement2540 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_expression_in_statement2551 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SEMI_in_statement2561 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CATCH_CLAUSE_LIST_in_catches2590 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_catchClause_in_catches2592 = new BitSet(new long[]{0x0800000000000008L});
    public static final BitSet FOLLOW_CATCH_in_catchClause2618 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_formalParameterStandardDecl_in_catchClause2620 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
    public static final BitSet FOLLOW_block_in_catchClause2622 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SWITCH_BLOCK_LABEL_LIST_in_switchBlockLabels2643 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_switchCaseLabel_in_switchBlockLabels2645 = new BitSet(new long[]{0x8400000000000008L});
    public static final BitSet FOLLOW_switchDefaultLabel_in_switchBlockLabels2648 = new BitSet(new long[]{0x0400000000000008L});
    public static final BitSet FOLLOW_switchCaseLabel_in_switchBlockLabels2651 = new BitSet(new long[]{0x0400000000000008L});
    public static final BitSet FOLLOW_CASE_in_switchCaseLabel2681 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_switchCaseLabel2683 = new BitSet(new long[]{0x6140100000000088L,0x4020009161002609L,0x0000000100002004L});
    public static final BitSet FOLLOW_blockStatement_in_switchCaseLabel2685 = new BitSet(new long[]{0x6140100000000088L,0x4020009161002609L,0x0000000100002004L});
    public static final BitSet FOLLOW_DEFAULT_in_switchDefaultLabel2711 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_blockStatement_in_switchDefaultLabel2713 = new BitSet(new long[]{0x6140100000000088L,0x4020009161002609L,0x0000000100002004L});
    public static final BitSet FOLLOW_FOR_INIT_in_forInit2739 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_localVariableDeclaration_in_forInit2742 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_expression_in_forInit2746 = new BitSet(new long[]{0x0000000000000008L,0x4000000000000000L});
    public static final BitSet FOLLOW_FOR_CONDITION_in_forCondition2774 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forCondition2776 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_FOR_UPDATE_in_forUpdater2802 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_forUpdater2804 = new BitSet(new long[]{0x0000000000000008L,0x4000000000000000L});
    public static final BitSet FOLLOW_PARENTESIZED_EXPR_in_parenthesizedExpression2832 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_parenthesizedExpression2834 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EXPR_in_expression2859 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expression2861 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ASSIGN_in_expr2882 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2884 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2886 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PLUS_ASSIGN_in_expr2898 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2900 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2902 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MINUS_ASSIGN_in_expr2914 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2916 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2918 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_STAR_ASSIGN_in_expr2930 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2932 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2934 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DIV_ASSIGN_in_expr2946 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2948 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2950 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_AND_ASSIGN_in_expr2962 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2964 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2966 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_OR_ASSIGN_in_expr2978 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2980 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2982 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_XOR_ASSIGN_in_expr2994 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr2996 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr2998 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MOD_ASSIGN_in_expr3010 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3012 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3014 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_SHIFT_RIGHT_ASSIGN_in_expr3026 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3028 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3030 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SHIFT_RIGHT_ASSIGN_in_expr3042 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3044 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3046 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SHIFT_LEFT_ASSIGN_in_expr3058 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3060 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3062 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_QUESTION_in_expr3074 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3076 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3078 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3080 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LOGICAL_OR_in_expr3092 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3094 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3096 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LOGICAL_AND_in_expr3108 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3110 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3112 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_OR_in_expr3124 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3126 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3128 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_XOR_in_expr3140 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3142 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3144 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_AND_in_expr3156 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3158 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3160 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_EQUAL_in_expr3172 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3174 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3176 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_EQUAL_in_expr3188 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3190 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3192 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_INSTANCEOF_in_expr3204 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3206 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000020000000L});
    public static final BitSet FOLLOW_type_in_expr3208 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LESS_OR_EQUAL_in_expr3220 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3222 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3224 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GREATER_OR_EQUAL_in_expr3236 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3238 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3240 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_BIT_SHIFT_RIGHT_in_expr3252 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3254 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3256 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SHIFT_RIGHT_in_expr3268 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3270 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3272 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_GREATER_THAN_in_expr3284 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3286 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3288 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SHIFT_LEFT_in_expr3300 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3302 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3304 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LESS_THAN_in_expr3316 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3318 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3320 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PLUS_in_expr3332 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3334 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3336 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MINUS_in_expr3348 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3350 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3352 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_STAR_in_expr3364 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3366 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3368 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_DIV_in_expr3380 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3382 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3384 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_MOD_in_expr3396 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3398 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3400 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNARY_PLUS_in_expr3412 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3414 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_UNARY_MINUS_in_expr3426 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3428 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PRE_INC_in_expr3440 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3442 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_PRE_DEC_in_expr3454 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3456 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POST_INC_in_expr3468 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3470 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_POST_DEC_in_expr3482 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3484 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_NOT_in_expr3496 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3498 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_LOGICAL_NOT_in_expr3510 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expr_in_expr3512 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CAST_EXPR_in_expr3524 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_type_in_expr3526 = new BitSet(new long[]{0x001FE1FFDF1CE370L,0x014A000890081020L,0x000007F0CB7D0000L});
    public static final BitSet FOLLOW_expr_in_expr3528 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_primaryExpression_in_expr3539 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DOT_in_primaryExpression3565 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3583 = new BitSet(new long[]{0x2000000000000000L,0x0100000090000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_primaryExpression3605 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_THIS_in_primaryExpression3627 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SUPER_in_primaryExpression3649 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_innerNewExpression_in_primaryExpression3671 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_in_primaryExpression3693 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_primitiveType_in_primaryExpression3729 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_CLASS_in_primaryExpression3731 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_VOID_in_primaryExpression3749 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_CLASS_in_primaryExpression3751 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_parenthesizedExpression_in_primaryExpression3785 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_primaryExpression3795 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_METHOD_CALL_in_primaryExpression3806 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3808 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_primaryExpression3810 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_arguments_in_primaryExpression3813 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_explicitConstructorCall_in_primaryExpression3824 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ARRAY_ELEMENT_ACCESS_in_primaryExpression3835 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_primaryExpression3837 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
    public static final BitSet FOLLOW_expression_in_primaryExpression3839 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_literal_in_primaryExpression3850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_newExpression_in_primaryExpression3860 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THIS_in_primaryExpression3870 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_arrayTypeDeclarator_in_primaryExpression3880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SUPER_in_primaryExpression3890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THIS_CONSTRUCTOR_CALL_in_explicitConstructorCall3914 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_explicitConstructorCall3916 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_arguments_in_explicitConstructorCall3919 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_SUPER_CONSTRUCTOR_CALL_in_explicitConstructorCall3931 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primaryExpression_in_explicitConstructorCall3933 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_explicitConstructorCall3936 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_arguments_in_explicitConstructorCall3939 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_ARRAY_DECLARATOR_in_arrayTypeDeclarator3960 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_arrayTypeDeclarator_in_arrayTypeDeclarator3963 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_qualifiedIdentifier_in_arrayTypeDeclarator3967 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_primitiveType_in_arrayTypeDeclarator3971 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_STATIC_ARRAY_CREATOR_in_newExpression3995 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_primitiveType_in_newExpression4013 = new BitSet(new long[]{0x0000000000000000L,0x4004000000000000L});
    public static final BitSet FOLLOW_newArrayConstruction_in_newExpression4015 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_newExpression4033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_qualifiedTypeIdent_in_newExpression4036 = new BitSet(new long[]{0x0000000000000000L,0x4004000000000000L});
    public static final BitSet FOLLOW_newArrayConstruction_in_newExpression4038 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_CONSTRUCTOR_CALL_in_newExpression4073 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_newExpression4075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_qualifiedTypeIdent_in_newExpression4078 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_arguments_in_newExpression4080 = new BitSet(new long[]{0x0000000000000008L,0x0800000000000000L});
    public static final BitSet FOLLOW_classTopLevelScope_in_newExpression4082 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_CLASS_CONSTRUCTOR_CALL_in_innerNewExpression4105 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_genericTypeArgumentList_in_innerNewExpression4107 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_IDENT_in_innerNewExpression4110 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
    public static final BitSet FOLLOW_arguments_in_innerNewExpression4112 = new BitSet(new long[]{0x0000000000000008L,0x0800000000000000L});
    public static final BitSet FOLLOW_classTopLevelScope_in_innerNewExpression4114 = new BitSet(new long[]{0x0000000000000008L});
    public static final BitSet FOLLOW_arrayDeclaratorList_in_newArrayConstruction4139 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
    public static final BitSet FOLLOW_arrayInitializer_in_newArrayConstruction4141 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_newArrayConstruction4151 = new BitSet(new long[]{0x0000000000000002L,0x4004000000000000L});
    public static final BitSet FOLLOW_arrayDeclaratorList_in_newArrayConstruction4154 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ARGUMENT_LIST_in_arguments4175 = new BitSet(new long[]{0x0000000000000004L});
    public static final BitSet FOLLOW_expression_in_arguments4177 = new BitSet(new long[]{0x0000000000000008L,0x4000000000000000L});
    public static final BitSet FOLLOW_set_in_literal0 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_switchCaseLabel_in_synpred1252645 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expression_in_synpred1322746 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});

}